我用WebBrowser控件来显示网页,重而控制网页里的每个元素,来实现自动登陆,发言功能,这些都运行正常,我不可能总是用同1个ID来发言吧,我就写了个Timer来控制,每隔一段时间就换个ID,这个时候就出问题了,应为那个网页没有登出按钮,所以我所有的操作都是在前一个ID的基础上发生的,所以当我用第2个ID登陆时根本找不到登陆的2个元素了(因为第一个ID还处于登陆状态),以前在IE中都是直接关了IE在换个ID登陆的,这次IE嵌入到WebBrowser控件里了,我是过了Free的方法来释放WebBrowser可是没用,而且WebBrowser也是动态生成的~
请问高手,怎么在WebBrowser中关闭网页,或者登出那个ID???procedure TForm1.Timer1Timer(Sender: TObject);
var
ov: OleVariant;
i:integer;
begin
if (iCtrl=0) then
begin
wb:=TWebBrowser.Create(Form1); //我在这里生成了个WebBrowser
TWinControl(wb).Parent:=Form1;
wb.Width:=1;
wb.Height:=1;
wb.Align:=altop;
wb.Navigate('http://www.xici.net/club_Junshi.asp'); //去登陆页面
Timer1.Interval:=iInterval;
end;
if (iCtrl=1) then
begin //查找用户名,密码对话框和登陆按钮,写入数据
ov :=wb.OleObject.document.all.item('UserName',0);
ov.Value :=eName.text+IntToStr(iCount+strtoint(eFrom.text));
ov := wb.OleObject.document.all.item('Password',0);
ov.Value := '1234567';
ov := wb.OleObject.document.all.item('do',1);
ov.click; //登陆
Timer1.Interval:=iInterval;
end;
if (iCtrl=2) then
begin //去另外个功能的页面
wb.Navigate('http://www.xici.net/board/bdlink.asp?id='+eBoard.Text);
Timer1.Interval:=iInterval;
end;
if (iCtrl=3) then
begin
ov :=wb.OleObject.document.all.item('Add',0);
ov.click;
Timer1.Interval:=iInterval;
end;
if (iCtrl=4) then
//一个操作循环完成后的处理,他将返回开始执行,换第2,3,4个ID来操作
begin
iCtrl:=-1;
iCount:=iCount+1;
if (iCount=(StrToInt(eTo.Text)-StrToInt(eFrom.Text))) then Timer1.Enabled:=False;
wb.Free;
Timer1.Interval:=1000;
end;
iCtrl:=iCtrl+1;
end;我的问题就是1个循环后由于原来的ID没有登出,所以下面的无法操作了~
请问高手,怎么在WebBrowser中关闭网页,或者登出那个ID???procedure TForm1.Timer1Timer(Sender: TObject);
var
ov: OleVariant;
i:integer;
begin
if (iCtrl=0) then
begin
wb:=TWebBrowser.Create(Form1); //我在这里生成了个WebBrowser
TWinControl(wb).Parent:=Form1;
wb.Width:=1;
wb.Height:=1;
wb.Align:=altop;
wb.Navigate('http://www.xici.net/club_Junshi.asp'); //去登陆页面
Timer1.Interval:=iInterval;
end;
if (iCtrl=1) then
begin //查找用户名,密码对话框和登陆按钮,写入数据
ov :=wb.OleObject.document.all.item('UserName',0);
ov.Value :=eName.text+IntToStr(iCount+strtoint(eFrom.text));
ov := wb.OleObject.document.all.item('Password',0);
ov.Value := '1234567';
ov := wb.OleObject.document.all.item('do',1);
ov.click; //登陆
Timer1.Interval:=iInterval;
end;
if (iCtrl=2) then
begin //去另外个功能的页面
wb.Navigate('http://www.xici.net/board/bdlink.asp?id='+eBoard.Text);
Timer1.Interval:=iInterval;
end;
if (iCtrl=3) then
begin
ov :=wb.OleObject.document.all.item('Add',0);
ov.click;
Timer1.Interval:=iInterval;
end;
if (iCtrl=4) then
//一个操作循环完成后的处理,他将返回开始执行,换第2,3,4个ID来操作
begin
iCtrl:=-1;
iCount:=iCount+1;
if (iCount=(StrToInt(eTo.Text)-StrToInt(eFrom.Text))) then Timer1.Enabled:=False;
wb.Free;
Timer1.Interval:=1000;
end;
iCtrl:=iCtrl+1;
end;我的问题就是1个循环后由于原来的ID没有登出,所以下面的无法操作了~
你可禁止Cookie, 但好多都是基于Cookie的, 只能新進入時, 清空Cookie
我去试试看~