2011-09-29 136 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搜索档案。 –