我有一个BHO,当Windows资源管理器浏览本地磁盘时,它应该拦截DISPID_BEFORENAVIGATE2事件。它在XP和Vista中运行良好,但在Windows 7 RC中停止工作。
事实证明,当浏览本地文件夹时,Windows 7 RC停止发送DISPID_BEFORENAVIGATE2事件!它确实将其他事件发送到我的BHO(例如DISPID_DOWNLOADBEGIN等),但我需要DISPID_BEFORENAVIGATE2。
任何人都可以确认这个和/或提供可能的解决方法吗?
谢谢!
答案 0 :(得分:0)
嗯,这已经晚了一年多了,但是这里有一个解决方法:只需使用API挂钩库(例如MinHook)在IShellBrowser::BrowseObject
上设置API挂钩。请参阅此处获取执行此操作的示例代码:API Hook on a COM object function?
这将通过绕道途径在所有IShellBrowser
个实例中路由导航。但是,IShellBrowser
扩展了IOleWindow
,因此您可以使用IOleWindow::GetWindow
和SendMessage
来处理您已经为其子类化的窗口的单个IShellBrowser
实例。