本人遇到这样一个问题
首先在WebBrowser 打开网站地址列表
然后找出要点击的网址,方法如下:
procedure TForm1.Button2Click(Sender: TObject);
var
J:integer;
spDisp,p: IDispatch;
IDoc1: IHTMLDocument2;
ielc: IHTMLElementCollection ;
ihtml:IHTMLElement;
iane:IHTMLAnchorElement;
begin
WebBrowser1.Document.QueryInterface(IHTMLDocument2,iDoc1);
ielc:=idoc1.Get_all;
for J:=0 to ielc.length-1 do
begin
Application.ProcessMessages;
spDisp := ielc.item(J, 0);
if SUCCEEDED(spDisp.QueryInterface(IHTMLAnchorElement ,iane))then
begin
if iane.href='http://www.xxx.com/' then //要点击的网址
begin
ihtml:=ielc.item(J,0) as IHTMLElement;
ihtml.click;
buzhouflag:='4';
end;
end;
end;
end;问题出来了
if SUCCEEDED(spDisp.QueryInterface(IHTMLAnchorElement ,iane))then 这句代码会抛出内存地址异常
而且还是毫无规律的 有的时候就正常 有的时候就异常,
不知道这是为什么
首先在WebBrowser 打开网站地址列表
然后找出要点击的网址,方法如下:
procedure TForm1.Button2Click(Sender: TObject);
var
J:integer;
spDisp,p: IDispatch;
IDoc1: IHTMLDocument2;
ielc: IHTMLElementCollection ;
ihtml:IHTMLElement;
iane:IHTMLAnchorElement;
begin
WebBrowser1.Document.QueryInterface(IHTMLDocument2,iDoc1);
ielc:=idoc1.Get_all;
for J:=0 to ielc.length-1 do
begin
Application.ProcessMessages;
spDisp := ielc.item(J, 0);
if SUCCEEDED(spDisp.QueryInterface(IHTMLAnchorElement ,iane))then
begin
if iane.href='http://www.xxx.com/' then //要点击的网址
begin
ihtml:=ielc.item(J,0) as IHTMLElement;
ihtml.click;
buzhouflag:='4';
end;
end;
end;
end;问题出来了
if SUCCEEDED(spDisp.QueryInterface(IHTMLAnchorElement ,iane))then 这句代码会抛出内存地址异常
而且还是毫无规律的 有的时候就正常 有的时候就异常,
不知道这是为什么
解决方案 »
- 用SQL语句对字符串操作的问题!!
- Excel文件导入Access中遇到的重大问题:Excel文件中有一列为“检查时间”....跪求各路神仙
- "请教下面代码Delphi的VB实现?300分跪求"的加分贴1,刚才不小心设了20分,再加100
- 一个机房记费管理的软件—(100分)
- web的dll发布问题
- 关于ATD拨号(TC35)
- 100分求解:各位常去的delphi论坛(我是菜鸟~很多问题想要问)
- 我用listview显示adotable的其中的一个表的内容,怎样删除listview选定的那一行?
- 在word97中如何输入数学公式,如(西格码)?
- 做一个好的登路窗口(给20分)
- SQL如何实现带进度条的数据库备份和还原
- 如何将ClientDataSet的结果集赋给ADOQuery以实现客户端本地表数据的更新?
var
J:integer;
spDisp,p: IDispatch;
IDoc1: IHTMLDocument2;
ielc: IHTMLElementCollection ;
ihtml:IHTMLElement;
iane:IHTMLAnchorElement;
begin
while WebBrowser1.ReadyState<>READYSTATE_COMPLETE do
begin
application.ProcessMessages;
sleep(20);
end; WebBrowser1.Document.QueryInterface(IHTMLDocument2,iDoc1); if iDoc1<> nil then
begin
ielc:=idoc1.Get_all;
for J:=0 to ielc.length-1 do
begin
Application.ProcessMessages;
spDisp := ielc.item(J, 0);
if SUCCEEDED(spDisp.QueryInterface(IHTMLAnchorElement ,iane))then
begin
if iane.href='http://www.xxx.com/' then //要点击的网址
begin
ihtml:=ielc.item(J,0) as IHTMLElement;
ihtml.click;
buzhouflag:='4';
end;
end;
end;
end;
end;
while WebBrowser1.ReadyState <>READYSTATE_COMPLETE do
begin
application.ProcessMessages;
sleep(20);
end; 加上他程序就不动了 像死了一样 点什么都不动 不知道是怎么回事
然后这里
while WebBrowser1.ReadyState <>READYSTATE_COMPLETE do
begin
application.ProcessMessages;
sleep(20);
end;
用
while XXXXIWebBrowser2.Get_ReadyState<>READYSTATE_COMPLETE do
begin
application.ProcessMessages;
sleep(20);
end;
替换试试,应该不会死了的..还有,如果可以确定,有时可以有时不可以的话,可以用try except ,然后在except里sleep一下,再执行一次原函数