如何向所有 Windows 资源管理器实例添加按钮?
我正在尝试向任何 Windows 资源管理器实例中的现有工具栏之一添加一个按钮。
经过大量研究,我发现 BHO(浏览器帮助对象)是挂钩
Windows 资源管理器的最佳方式。
我的问题是:
- 这是正确的做法吗?
- 在 BHO 的 SetSite 中,我得到了 comObject,它是资源管理器窗口。现在怎么办?
- 如果我可以获得资源管理器窗口的 hWnd,我可以使用 win API 添加我的按钮吗?
请注意,我正在针对 XP 使用 C# 进行开发。
谢谢。
I am trying to add a button to one of the existing tool bars in any windows explorer instance.
After much research i figured out that BHO (browser helper objects) are the best way to hook
to windows explorer.
My question is :
- Is that the correct way to go about it ?
- In the SetSite of the BHO i get the comObject that is the explorer window. What now ?
- If i can get the hWnd of the explorer window can i use win API to add my button ?
Note i am developing in C# for XP.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
1 在 XP 之前的版本中,您可以在默认文件夹模板中添加自定义项目,因为文件夹窗口实际上是一个网页。在 XP 及更高版本中,情况不再如此。 Deskband 是扩展 UI 的受支持方式。
2 站点相同。您甚至可以接收 DWebBrowserEvents2 以在文件夹视图准备就绪时收到通知。
3 不支持在资源管理器上使用窗口函数。支持的自定义资源管理器的方法是创建桌带。如果您有资源针对客户受众使用的每个 Windows 资源管理器版本测试您的代码,并在 explorer.exe 的每个新版本(或新语言)发布时继续进行兼容性测试,那么从理论上讲这是可能的。
BHO 无法添加桌带。如果您想开始 BHO 和桌带编程,请参阅 Paul DiLascia 在 MSJ 1999 年 11 月号上发表的文章“My Band is Your Band”。 MSDN 中还有另一篇关于 BHO 的文章“使用 Visual Studio 2005 构建浏览器帮助程序对象”。基本上,您需要处理 DocumentComplete 和 BeforeNavigate 事件,并小心不要在文档未准备好时访问文件夹视图。您可以在 BHO 和 deskband 之间使用您认为合适的任何通信方法,例如具有特殊窗口类的隐藏窗口、静态变量(如果两者位于同一 dll 中)、共享内存、命名管道等。
Microsoft 不支持创建进程内扩展在.Net 4.0 之前的托管代码中
1 In pre-XP you can add custom items in the default folder template because the folder window is actually a webpage. In XP and later that is no longer true. A Deskband is the supported way to extend the UI.
2 The site is the same. You can even sink DWebBrowserEvents2 to get notified when the folder view is ready.
3 using window functions on explorer is not supported. The supported way to customize the explorer is to create deskbands. it is theoretically possible if you have the resource to test your code against each and every version of Windows Explorer used by your client audience and continue to do compatibility testing when each new version (or new language) of explorer.exe is released.
BHO can not add deskband. If you want to start BHO and deskband programming, look at Paul DiLascia's article "My Band is Your Band" in the November 1999 issue of MSJ. There is another article "Building Browser Helper Objects with Visual Studio 2005" in MSDN for BHO. Basically you need to handle the DocumentComplete and BeforeNavigate events and be careful not to access the folder view when the document is not ready. You can use any communication method that you see fit between your BHO and your deskband, such as hidden window with special window class, static variable if the two are in the same dll, shared memory, named pipe, etc.
Microsoft does not support creating In-Process extensions in managed code until .Net 4.0