我正在尝试向任何 Windows 资源管理器实例中的现有工具栏之一添加一个按钮。
经过大量研究,我发现 BHO(浏览器帮助对象)是挂钩的最佳方式
到 Windows 资源管理器。
我的问题是:
- 这是正确的方法吗?
- 在 BHO 的 SetSite 中,我得到了作为资源管理器窗口的 comObject。现在怎么办 ?
- 如果我可以获得资源管理器窗口的 hWnd,我可以使用 win API 添加我的按钮吗?
注意我正在为 XP 开发 C#。
谢谢。
我正在尝试向任何 Windows 资源管理器实例中的现有工具栏之一添加一个按钮。
经过大量研究,我发现 BHO(浏览器帮助对象)是挂钩的最佳方式
到 Windows 资源管理器。
我的问题是:
注意我正在为 XP 开发 C#。
谢谢。
1 在 XP 之前的版本中,您可以在默认文件夹模板中添加自定义项目,因为文件夹窗口实际上是一个网页。在 XP 及更高版本中,这不再适用。Deskband 是扩展 UI 的受支持方式。2 网站是一样的。您甚至可以接收 DWebBrowserEvents2 以在文件夹视图准备就绪时收到通知。3 不支持在资源管理器上使用窗口函数。自定义资源管理器的受支持方式是创建桌带。如果您有资源针对客户受众使用的每个版本的 Windows Explorer 测试您的代码,并在 explorer.exe 的每个新版本(或新语言)发布时继续进行兼容性测试,那么理论上是可能的。
BHO 不能添加桌带。如果您想开始 BHO 和桌带编程,请查看 Paul DiLascia 在 1999 年 11 月号 MSJ 上的文章“My Band is Your Band”。BHO 的 MSDN 中还有另一篇文章“使用 Visual Studio 2005 构建浏览器帮助程序对象”。基本上,您需要处理 DocumentComplete 和 BeforeNavigate 事件,并注意在文档未准备好时不要访问文件夹视图。您可以使用您认为适合 BHO 和桌带之间的任何通信方法,例如具有特殊窗口类的隐藏窗口、如果两者在同一个 dll 中的静态变量、共享内存、命名管道等。