1

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

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

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

谢谢!

4

1 回答 1

0

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

IShellBrowser这将通过您的绕道在所有实例中路由导航。但是,IShellBrowserextends IOleWindow,因此您可以使用IOleWindow::GetWindow和处理您已将其窗口子类SendMessage化的单个实例。IShellBrowser

于 2010-09-12T20:24:38.443 回答