У меня есть BHO, который прослушивает событие onload. вот код (упрощенный), запускаемый при каждом событии BeforeNavigate2:
CComQIPtr<IWebBrowser2> pBrowser(pDisp);
CComPtr<IDispatch> pUnk = NULL;
HRESULT hr = pBrowser->get_Document(&pUnk);
CComQIPtr<IHTMLDocument2> pHtmlDoc2(pUnk);
CComQIPtr<IHTMLWindow2> pWindow2;
pHtmlDoc2->get_parentWindow((IHTMLWindow2**) &pWindow2);
CComQIPtr<IHTMLWindow3> pWindow3(pWindow2);
VARIANT_BOOL result = VARIANT_TRUE;
CComBSTR onEvent(TEXT("onload"));
pDomEvent = new Page::DOMLoaded();
pWindow3->attachEvent(onEvent, pDomEvent, &result);
(убрал все чеки для упрощения)
Событие onload запускается для первой страницы, но не для страниц, посещенных впоследствии. Я не мог понять, что мне не хватает или я делаю неправильно.