Windows 7不会触发DISPID_BEFORENAVIGATE2事件?

时间:2009-07-15 20:24:39

标签: winapi bho beforenavigate2

我有一个BHO,当Windows资源管理器浏览本地磁盘时,它应该拦截DISPID_BEFORENAVIGATE2事件。它在XP和Vista中运行良好,但在Windows 7 RC中停止工作。

事实证明,当浏览本地文件夹时,Windows 7 RC停止发送DISPID_BEFORENAVIGATE2事件!它确实将其他事件发送到我的BHO(例如DISPID_DOWNLOADBEGIN等),但我需要DISPID_BEFORENAVIGATE2。

任何人都可以确认这个和/或提供可能的解决方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,这已经晚了一年多了,但是这里有一个解决方法:只需使用API​​挂钩库(例如MinHook)在IShellBrowser::BrowseObject上设置API挂钩。请参阅此处获取执行此操作的示例代码:API Hook on a COM object function?

这将通过绕道途径在所有IShellBrowser个实例中路由导航。但是,IShellBrowser扩展了IOleWindow,因此您可以使用IOleWindow::GetWindowSendMessage来处理您已经为其子类化的窗口的单个IShellBrowser实例。