0
私は広告/ポップアップブロッカーBHOに取り組んでいます。イベント「downloadcomplete」からウェブサイトのhtmlにアクセスしようとしています。そのため、すべての広告と悪意のあるURLをフィルタリングできます。イベントDownloadCompleteでHTMLソースにアクセスしますか?
私のコードは次のようになります。
case DISPID_DOWNLOADCOMPLETE:
{
if(iBrowser) //IWebBrowser2*
{
HRESULT hr;
IUnknown *pUnkBrowser = NULL;
hr = iBrowser->QueryInterface(IID_IUnknown, (void**)&pUnkBrowser);
if(SUCCEEDED(hr) && pUnkBrowser!=NULL)
{
if(SUCCEEDED(hr))
{
IDispatch* pHtmlDocDispatch = NULL;
IHTMLDocument2 * pHtmlDoc = NULL;
hr = iBrowser->get_Document (&pHtmlDocDispatch);
if (SUCCEEDED (hr) && (pHtmlDocDispatch != NULL))
{
hr = pHtmlDocDispatch->QueryInterface (IID_IHTMLDocument2, (void**)&pHtmlDoc);
if (SUCCEEDED (hr) && (pHtmlDoc != NULL))
{
IHTMLElement *pBody = 0;
pHtmlDoc->get_body(&pBody);
// I want to get the html here and filter out the ads but pBody is always null
if(pHtmlDoc) pHtmlDoc->Release();
}
if(pHtmlDocDispatch) pHtmlDocDispatch->Release();
}
}
if(pUnkBrowser) pUnkBrowser->Release();
}
}
return S_OK;
}
break;
がどのようにアクセスし、このイベントからHTMLを修正することができますか?
しかし、DocumentCompleteイベントでは、広告と悪意のあるjが既にブラウザに読み込まれています。 – user979390
DOMを変更する場合は、ブラウザがhtmlを読み込んでいる必要があります。 –
しかし、DownloadComplete上では、完全なhtmlがすでにどこかに存在しておらず、mshtmlによって処理されようとしていますか?邪魔されることのないカント? – user979390