Windows 7 не запускает событие DISPID_BEFORENAVIGATE2? - PullRequest
1 голос
/ 16 июля 2009

У меня есть BHO, который должен перехватывать события DISPID_BEFORENAVIGATE2, когда проводник Windows просматривает локальные диски. Он хорошо работает в XP и Vista, но перестал работать в Windows 7 RC.

Оказывается, Windows 7 RC перестала отправлять события DISPID_BEFORENAVIGATE2 при просмотре локальных папок! Он отправляет другие события моему BHO (например, DISPID_DOWNLOADBEGIN и т. Д.), Но мне нужно DISPID_BEFORENAVIGATE2.

Может ли кто-нибудь подтвердить это и / или предложить возможный обходной путь?

Спасибо!

1 Ответ

0 голосов
/ 13 сентября 2010

Ну, это более чем на год, но вот обходной путь: просто установите хук API на IShellBrowser::BrowseObject, используя библиотеку хуков API, такую ​​как MinHook . Смотрите здесь пример кода, который делает это: API Hook для функции COM-объекта?

Это будет направлять навигацию во ВСЕХ IShellBrowser экземплярах через ваш обход. Но IShellBrowser расширяет IOleWindow, поэтому вы можете использовать IOleWindow::GetWindow и SendMessage для работы с отдельным экземпляром IShellBrowser, окно которого вы переклассифицировали.

...