【发布时间】:2022-01-10 11:18:09
【问题描述】:
我正在构建一个 Visual Studio 扩展,它应该在 ToolBar 或 ToolStrip 上添加我的工具按钮。
有两种情况:
-
第一种情况,将我的红色按钮添加到由另一个扩展(Visual Micro)添加的工具栏/工具条中,见图 1。
-
第二种情况,将我的红色按钮添加到 Visual Studio UI 的属性工具栏/工具条中,见图 2。
图片1:
图 2:
我尝试实施第二种情况,但没有任何积极的结果。
代码如下:
EventHandler btnClick = new EventHandler(delegate (Object o, EventArgs a)
{
//snip
});
System.Drawing.Image img = System.Drawing.Image.FromFile("W:\\...\\red_btn.png");
ToolStripButton btn = new ToolStripButton("My Button", img, btnClick, "RedButton");
btn.Width = 32;
btn.Height = 32;
btn.Visible = true;
IntPtr hProperties = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "WindowsForms10.Window.8.app.0.c940ee_r43_ad1", null) ;
ToolStrip toolStrip = (ToolStrip)ToolStrip.FromHandle(hProperties);
if (toolStrip != null)
{
toolStrip.Items.Add(btn);
toolStrip.Refresh();
toolStrip.Visible = true;
}
当我从 ToolWindow1Control init() 方法执行上述代码时,没有任何反应。我尝试的是从“属性”窗口中找到工具栏的句柄并将我的按钮添加到其中。但这不起作用。
我希望将红色按钮添加到“属性”窗口的工具栏中。这个按钮应该执行一些与当前查看的源文件相关的代码。这是第二种情况。
对于第一种情况,我不知道如何找到该工具栏的句柄来添加我的按钮。
请帮忙。
【问题讨论】:
-
要扩展 Visual Studio,您不应该破解它,而是使用 Visual Studio API:docs.microsoft.com/en-us/visualstudio/extensibility/…
-
@SimonMourier 感谢您的评论,但有时为了用户界面的简单性或直观性或有其他一些强有力的原因,最好按照我需要的方式扩展它。当然,遵循与此相关的可用文档是一个好习惯,但我想做的不是不允许做的事情,我使用 WinAPI 甚至从扩展内部运行,也许是为了扩展其他扩展功能,等等……
-
Visual Studio 将 WPF 用于其 UI。因此,您无法检索到任何
HWNDs。整个应用程序呈现在一个窗口上。你试图做的事情是不可能的。如果需要向 Visual Studio 的 GUI 添加任何视觉效果,请使用公共 API。这不仅更好,而且是唯一的方法。
标签: c# wpf winapi visual-studio-extensions