I have a BHO that is supposed to intercept the DISPID_BEFORENAVIGATE2 events when Windows Explorer is browsing the local disks. It works well in XP and Vista, but stopped working in Windows 7 RC.
Turns out, Windows 7 RC stopped sending the DISPID_BEFORENAVIGATE2 events when the local folders are browsed! It does send other events to my BHO (such as DISPID_DOWNLOADBEGIN, etc.), but I need DISPID_BEFORENAVIGATE2.
Can anyone confirm this and/or offer a possible workaround?
Thanks!
Well, it's over a year late, but here's a workaround: Simply set an API hook on IShellBrowser::BrowseObject using an API hook library such as MinHook. See here for sample code that does this: API Hook on a COM object function?
This will route navigations in ALL IShellBrowser instances through your detour. But, IShellBrowser extends IOleWindow, so you can use IOleWindow::GetWindow and SendMessage to work with an individual IShellBrowser instance whose window you've subclassed.
来源:https://stackoverflow.com/questions/1133786/windows-7-does-not-fire-dispid-beforenavigate2-event