C# 如何向所有windows资源管理器实例添加按钮?

C# 如何向所有windows资源管理器实例添加按钮?,c#,com,interop,windows-xp,windows-explorer,C#,Com,Interop,Windows Xp,Windows Explorer,我正在尝试向任何windows资源管理器实例中的一个现有工具栏添加按钮 经过大量研究,我发现BHO(浏览器助手对象)是最好的挂钩方式 到windows资源管理器 我的问题是: 这样做对吗 在BHO的SetSite中,我得到了作为资源管理器窗口的comObject。现在怎么办 如果我可以获得浏览器窗口的hWnd,我可以使用win API添加我的按钮吗 注意,我是用C#for XP开发的 谢谢。1在XP之前的版本中,您可以在默认文件夹模板中添加自定义项目,因为文件夹窗口实际上是一个网页。在XP和更高

我正在尝试向任何windows资源管理器实例中的一个现有工具栏添加按钮

经过大量研究,我发现BHO(浏览器助手对象)是最好的挂钩方式

到windows资源管理器

我的问题是:

  • 这样做对吗
  • 在BHO的SetSite中,我得到了作为资源管理器窗口的comObject。现在怎么办
  • 如果我可以获得浏览器窗口的hWnd,我可以使用win API添加我的按钮吗
  • 注意,我是用C#for XP开发的


    谢谢。

    1在XP之前的版本中,您可以在默认文件夹模板中添加自定义项目,因为文件夹窗口实际上是一个网页。在XP和更高版本中,这不再是事实。Deskband是扩展UI的受支持方式。 2该站点是相同的。您甚至可以接收DWebBrowserEvents2,以便在文件夹视图准备就绪时收到通知。 3不支持在资源管理器上使用窗口功能。支持的自定义资源管理器的方法是创建DeskBand。如果您有资源针对客户端用户使用的每个Windows资源管理器版本测试代码,并在Explorer.exe的每个新版本(或新语言)发布后继续进行兼容性测试,理论上是可能的

    BHO无法添加deskband。如果你想开始BHO和deskband编程,请看1999年11月MSJ上Paul DiLascia的文章“我的乐队就是你的乐队”。在MSDN for BHO中还有另一篇文章“使用Visual Studio 2005构建浏览器辅助对象”。基本上,您需要处理DocumentComplete和BeforeNavigate事件,并小心不要在文档未准备好时访问文件夹视图。您可以在BHO和deskband之间使用您认为合适的任何通信方法,例如带有特殊窗口类的隐藏窗口、静态变量(如果两者位于同一dll中)、共享内存、命名管道等


    谢谢你的回答,我也同意windows功能是一个不好的选择。我想说清楚,你的意思是我应该有一个BHO,在windows资源管理器中添加一个波段控制?听起来不错,但是怎么做呢?再次感谢。