2011-09-29 138 views
0

正在執行我解決不了我的問題之前,我希望有人知道如何...如何編輯HTML(標籤),通過CppWebBrowser

我有一個組件上我的形式TCppWebBrowser,當我瀏覽到一個URL,在文檔被下載之後,在方法OnDocumentComplete()中,我試圖檢查並更改加載文檔的HTML源代碼,然後由瀏覽器執行。

我需要,因爲一些網站有背景聲音,我想解析html和刪除標籤或只是刪除包含聲音文件如* .wav,* .mid,* .swf,* .mp3的文本..等。

例如,如果HTML源代碼這一行:

<NOEMBED><BGSOUND src="/images/ImagineCut.wav"></NOEMBED> 

然後,我將其更改爲:

<NOEMBED><BGSOUND src="/images/ImagineCut."></NOEMBED> 

或者我可以刪除整個標籤。

使用這種方法我想靜音瀏覽器甚至停止播放聲音。請考慮此方法,因爲它會幫助我避免所有種類的聲音後,我編輯HTML ..(瀏覽器之前執行它)

這就是我試圖做的:

void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject *Sender, 
     LPDISPATCH pDisp, Variant *URL) 
{ 

IHTMLDocument2 *pHTMLDoc; 
CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,(LPVOID*)&pHTMLDoc); 
IHTMLElement *pElem; 
pHTMLDoc->get_body(&pElem); 
BSTR text; 
pElem->get_innerHTML(&text); 
text = Cleaning(text); //checking and changing html without souds 
pElem->put_innerHTML(text); 
pElem->Release(); 
pHTMLDoc->Release(); 

} 
+0

DLCTL_BGSOUNDS有什麼問題? –

+0

問題是,網站有很多方法來附加背景聲音,但DLCTL_BGSOUNDS並沒有解決它成功的各種背景聲音。我已經嘗試了這種方法,並且我可以說這不好,如果我在webbrowser執行之前自己清理html代碼,那麼我可以刪除聲音擴展,並且webbrowser將無法播放它們。 – ManY

回答

-1

要做到你所要求的,你必須完全從TCppWebBrowser組件外部下載HTML文件,根據需要更改HTML,然後使用其IPersist ...接口之一將新HTML推入TCppWebBrowser。 Borland/CodeGear/Embarcadero論壇曾多次發佈過這樣的例子。

+0

WOW ..我很快就收到了答案,謝謝! :) – ManY

+0

我可以使用GET()方法下載帶有TNMHTTP或TIdHTTP的HTML,我甚至可以使用CppWebBrowser導航兩次,並獲得具有上述發佈代碼的HTML代碼,但問題是我無法成功將其推送到webbrowser。我從來沒有使用過IPersist接口,如果你有一個例子,然後在這裏發佈,或提供工作鏈接。我會嘗試從MSDN讀取它。 無論如何感謝您的回覆! – ManY

+0

正如我所說的,有很多使用Web瀏覽器的IPersist接口將HTML推入瀏覽器的例子。在http://www.deja.com和http://forums.embarcadero.com搜索檔案。 –