|
1
5
问题的主要原因是,它取决于工具窗口,因为VisualStudio并不要求太多关于工具窗口的实际渲染方式。 如果工具窗口有HNWD可供使用,则可以使用 SetLayeredWindowAttributes 作用如果工具窗口是WPF,则可以使用其他技巧。 现在,问题是要抓住一些有用的东西。。。只要在VisualStudio2010上启动SPY++,你就会看到周围没有多少可见的HWND。有些包使用非托管代码,有些包使用。NET+Winforms,以及越来越多的最新软件包使用。NET+WPF。 UISpy (另一个间谍工具,但基于 UI Automation )可以看到所有工具窗口,但它没有显示任何本机窗口句柄(UI automation可以读取的标准属性之一),这不是好消息。 Visual Studio使用IVsWindowPane界面,特别是 CreatePaneWindow 方法来创建主机窗口,但没有任何官方文件可以让任何HWND句柄返回使用。 隐马尔可夫模型!如果你有一个特定的工具窗口,你想调整,我们可以有一个更深入的研究,但我认为很难编写一个100%通用工具。 编辑 当前位置我搜索得更远了。下面是一段代码,用于枚举当前Visual Studio实例的所有windows框架(固定或浮动):
这将给出WindowFrame实例的列表。WindowFrame没有文档记录,但它是公共的(位于Microsoft.VisualStudio.Platform.WindowManagement.dll中),因此您可以使用它。每个WindowFrame实例都有一个具有内容属性的FrameView属性。从我的发现来看,这个内容属性大多数时候是WPF的Panel元素。该面板下面的层次结构将取决于窗口的实际实现方式。 如果是非托管或Winforms(例如.SQL编辑器),则面板的子集合中将有一个HwndHost。我试着玩它(使用 SetLayeredWindowAttributes ),但它似乎不起作用。。。 如果它是一个WPF(例如,全新的C#/VB编辑器),那么将有一个巨大的WPF层次结构,它最终将成为一个 IWfpTextView 实施在这个层次结构中,你可以改变很多东西,有些可以工作(比如后台属性),但是。。。关于透明度,我认为这是不可能的,因为根窗口不允许它(它有 AllowTransparency 设置为false,一旦显示就无法更改)。例如,将“不透明度”设置为0.5是可行的,但由于没有透明度,效果只是使窗口变暗。。。 |
|
|
2
0
你退房了吗 Visual Studio Color Theme Editor ? 如果它不能满足你的需要,也许你可以向作者索取该功能。 |