2009-11-16 56 views
0

我想在任何Windows资源管理器实例中添加一个按钮到现有的工具栏之一。如何添加一个按钮到所有的Windows资源管理器实例?

大量的研究后,我想通了,BHO(浏览器辅助对象)是挂钩

Windows资源管理器的最佳途径。

我的问题是:

  1. 是正确的路要走呢?
  2. 在BHO的SetSite中,我得到了作为资源管理器窗口的comObject。现在怎么办 ?
  3. 如果我可以得到浏览器窗口的HWN我可以使用WIN API添加我的按钮?

注意我在C#中的XP开发。

谢谢。

回答

1

1在XP之前,您可以在默认文件夹模板中添加自定义项目,因为该文件夹窗口实际上是一个网页。在XP和更高版本中,这不再是真实的。 Deskband是扩展UI的支持方式。 2该网站是一样的。当文件夹视图准备就绪时,您甚至可以下载DWebBrowserEvents2以接收通知。 3不支持在浏览器上使用窗口功能。支持定制资源管理器的方式是创建桌面带。如果您有资源根据您的客户受众使用的每个版本的Windows资源管理器测试代码,并在Explorer.exe的每个新版本(或新语言)发布时继续进行兼容性测试,那么理论上可能会发生这种情况。

BHO不能添加桌面带。如果你想开始BHO和桌面带编程,请看1999年11月号MSJ的Paul DiLascia的文章“我的乐队是你的乐队”。还有另一篇文章“使用Visual Studio 2005构建浏览器帮助程序对象”,其中介绍了BHO的MSDN。基本上,您需要处理DocumentComplete和BeforeNavigate事件,并且在文档未准备好时请小心不要访问文件夹视图。你可以使用你看到你的BHO和你deskband之间合适的任何通信方式,如用特殊的窗口类,如果两个都在同一个DLL静态变量,共享内存隐藏窗口,命名管道等

Microsoft does not support creating In-Process extensions in managed code until .Net 4.0

+0

谢谢你的答案盛,我同意windows功能是一个糟糕的路要走。 只是要说清楚,你的意思是我应该有一个BHO,将频段控制添加到Windows资源管理器中? 听起来不错,但是怎么样? 再次感谢。 – 2009-11-17 05:54:59

+0

编辑帖子 – 2009-11-17 14:31:19

相关问题