BHO 中 HTMLDocumentEvents2 是怎样使用的?(200分)

我随便写了个,没发现你说的问题啊<br><br>unit Unit1;<br><br>interface<br><br>uses<br> &nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br> &nbsp;Dialogs, OleCtrls, SHDocVw,mshtml;<br><br>type<br> &nbsp;TForm1 = class(TForm)<br> &nbsp; &nbsp;wb1: TWebBrowser;<br> &nbsp; &nbsp;procedure FormCreate(Sender: TObject);<br> &nbsp; &nbsp;procedure wb1DocumentComplete(Sender: TObject; const pDisp: IDispatch;<br> &nbsp; &nbsp; &nbsp;var URL: OleVariant);<br> &nbsp;private<br> &nbsp; &nbsp;{ Private declarations }<br> &nbsp;public<br> &nbsp; &nbsp;{ Public declarations }<br> &nbsp;end;<br><br>var<br> &nbsp;Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br> &nbsp;wb1.Navigate('c:/aa.html');<br>end;<br><br>procedure TForm1.wb1DocumentComplete(Sender: TObject;<br> &nbsp;const pDisp: IDispatch; var URL: OleVariant);<br>var<br>doc:IHTMLDocument2;<br>img:IHTMLElement;<br>begin<br> &nbsp;doc:=wb1.Document as IHTMLDocument2;<br> &nbsp;img:=doc.images.item(null,0) as &nbsp; IHTMLElement;<br> &nbsp;img.outerHTML:='dddd';<br>end;<br><br>end.<br><br>html为<br><br>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;<br>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;<br>&lt;title&gt;Untitled Document&lt;/title&gt;<br>&lt;/head&gt;<br><br>&lt;body&gt;<br>&lt;img src=&quot;c:/aa.gif&quot; /&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;
 
看了下,似乎是你这句的问题<br><br>img:= imgList.item(i,EmptyParam) as IHTMLElement;<br><br><br>item第一个参数是名字,第二个才是索引.你似乎用反了
 
img:= imgList.item(i,EmptyParam) as IHTMLElement;<br>这句没错呀<br>showmessagebox(img.tagname)<br>可以获取到网页的元素标记
 
看我写的那些代码没有?可以成功替换,不出任何问题.不知道你那里是这么回事
 
你试一下,有两个图的元素,会怎样?
 
多图片也正常<br>procedure TForm1.wb1DocumentComplete(Sender: TObject;<br> &nbsp;const pDisp: IDispatch; var URL: OleVariant);<br>var<br>doc:IHTMLDocument2;<br>img:IHTMLElement;<br>i:Integer;<br>olei:OleVariant;<br>begin<br> &nbsp;doc:=wb1.Document as IHTMLDocument2;<br> &nbsp;for i:=0 to 4 do<br> &nbsp;begin<br> &nbsp; &nbsp;olei:=i;<br> &nbsp; &nbsp;img:=nil;<br> &nbsp; &nbsp;img:=doc.images.item(EmptyParam,olei) as &nbsp; IHTMLElement;<br> &nbsp; &nbsp;img.outerHTML:='dddd'+inttostr(i);<br> &nbsp;end;<br>end;<br><br><br>---------------<br>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;<br>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;<br>&lt;title&gt;Untitled Document&lt;/title&gt;<br>&lt;/head&gt;<br><br>&lt;body&gt;<br>&lt;img src=&quot;c:/aa.gif&quot; /&gt;<br>&lt;img src=&quot;c:/aa.gif&quot; /&gt;<br><br>&lt;img src=&quot;c:/aa.gif&quot; /&gt;<br>&lt;img src=&quot;c:/aa.gif&quot; /&gt;<br>&lt;img src=&quot;c:/aa.gif&quot; /&gt;<br>&lt;img src=&quot;c:/aa.gif&quot; /&gt;<br>&lt;img src=&quot;c:/aa.gif&quot; /&gt;<br><br>&lt;/body&gt;<br>&lt;/html&gt;
 
doc.images 这个是关键,只能用 images 元素,不能只够 tagname 做元素的区别<br>我突然有个冲动,想做多页面浏览器~
 
做吧!很容易.
 
做得好就不容易了,现在没有一个是比较好的多页面浏览器
 
maxthon (myie2)
 
现在浏览器主要有:傲游(maxthon),世界之窗(TheWorld),GreenBrowser,TOB浏览器(The Open Browser),腾讯TT等。
 
它们都是使用 VC 开发的,不是 DELPHI<br>我现在正在用 TW。<br>好象很多的多页面都是会有假死现象
 
汗,不是,多数是VC的,比如傲游和GreenBrowser都是基于myie的。但也有几个是Delphi的。<br>所谓的做浏览器简单,不过是简单到拉一个TWebBrowser,一个ComboBox,几个按钮就行。但是要想做的出色,绝非易事。<br>上面的-e老兄,做浏览器做了五六年了。
 
是的,绝非易事,我正在做了~ :(
 
OK,大家一起做。<br>payer,联系一下我。<br>QQ:3249136 MSN:login_free@hotmail.com
 
顶部