IWebBrowser2 - Quelltext anzeigen
-
Hallo,
wie kann ich den HTML-Quelltext einer Seite von einem IWebBrowser2 Control anzeigen?
-
@Ryson, soweit ich weiß musst du dir von deinem Browser-Objekt das dazugehörige IHTMLDocument2 geben lassen. Von dort aus solltest du auf den Quelltext der jeweiligen Seite zugreifen können. Habe nur gerade keinen Beispielcode zur Hand.
-
Danke Herrmann, das hat mich schon ein ganzes Stück weiter gebracht.
Den Quelltext kann ich nun abfragen, allerdings nur den body-Teil.
Wie erhalte ich den kompletten Code?HRESULT hr; IDispatch *htmlDisp = NULL; IHTMLDocument2 *doc = NULL; IHTMLElement *element = NULL; hr = pIwb->get_Document(&htmlDisp); if( FAILED(hr) && htmlDisp == NULL ) { return E_FAIL; } hr = htmlDisp->QueryInterface(IID_IHTMLDocument2, (void**)&doc); if( FAILED(hr) && doc == NULL ) { htmlDisp->Release(); return E_FAIL; } hr = doc->get_body(&element); if( FAILED(hr) && element == NULL ) { htmlDisp->Release(); doc->Release(); return E_FAIL; } hr = element->get_outerHTML(html); htmlDisp->Release(); doc->Release(); element->Release(); if( FAILED(hr) ) { return E_FAIL; }
-
Guck Dir mal die anderen IHtmlDocument-Interfaces an. Jedes Interface hat bestimmte Funktionen, die im anderen nicht vorkommen.
-
Ja. Danke.

Es ist umständlich.
Hier die gekürzte Fassung...(BSTR* source, BOOL bPlainText) IWebBrowser2 *pIwb = NULL; HRESULT hr; IDispatch *pHTMLDisp = NULL; IHTMLDocument2 *pHTMLDoc = NULL; IHTMLElementCollection *pHTMLCollection = NULL; IDispatch *pTAGDispatch = NULL; IHTMLElementCollection *pTAGCollection = NULL; IDispatch *pItemDispatch = NULL; IHTMLElement *pItemHTML = NULL; hr = pIwb->get_Document(&pHTMLDisp); ... hr = pHTMLDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc); ... hr = pHTMLDoc->get_all(&pHTMLCollection); ... hr = pHTMLCollection->tags(CComVariant( "HTML" ), &pTAGDispatch); ... hr = pTAGDispatch->QueryInterface(IID_IHTMLElementCollection, (void**)&pTAGCollection); ... hr = pTAGCollection->item(CComVariant( 0L ), CComVariant(), &pItemDispatch); ... hr = pItemDispatch->QueryInterface(IID_IHTMLElement, (void**)&pItemHTML); ... if( bPlainText ) { pItemHTML->get_outerText(source); } else { pItemHTML->get_outerHTML(source); }