基本代码:
procedure TWorkThread.WebBrowserDocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
Doc:IHTMLDocument2;
input:OleVariant;
userinputelement,pwdinputelement:ihtmlinputelement;
access_token:ansistring;
begin
if pos('baidu',PChar(WebBrowser.locationURL)) >0 then
begin
doc:=WebBrowser.document as ihtmldocument2;
userinputelement:=(doc.all.item('kw',0) as ihtmlinputelement);
userinputelement.value:='百度';
input:=doc.all.item('su',0);
input.click;
end;
end;procedure TWorkThread.run;
begin
activex.CoInitialize(nil);
try
WebBrowser := TWebBrowser.Create(form1);
WebBrowser.Silent:=true;
WebBrowser.ParentWindow:=form1.Handle;
//WebBrowser.OnDocumentComplete := Form1.WebBrowser1DocumentComplete;
WebBrowser.Navigate('www.baidu.com');
except
WebBrowser.Destroy;
end;
activex.CoUninitialize();
end;
procedure TWorkThread.WebBrowserDocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
Doc:IHTMLDocument2;
input:OleVariant;
userinputelement,pwdinputelement:ihtmlinputelement;
access_token:ansistring;
begin
if pos('baidu',PChar(WebBrowser.locationURL)) >0 then
begin
doc:=WebBrowser.document as ihtmldocument2;
userinputelement:=(doc.all.item('kw',0) as ihtmlinputelement);
userinputelement.value:='百度';
input:=doc.all.item('su',0);
input.click;
end;
end;procedure TWorkThread.run;
begin
activex.CoInitialize(nil);
try
WebBrowser := TWebBrowser.Create(form1);
WebBrowser.Silent:=true;
WebBrowser.ParentWindow:=form1.Handle;
//WebBrowser.OnDocumentComplete := Form1.WebBrowser1DocumentComplete;
WebBrowser.Navigate('www.baidu.com');
except
WebBrowser.Destroy;
end;
activex.CoUninitialize();
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, ActiveX, StdCtrls, MSHTML;type
TWorkThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
procedure run;
procedure WebBrowserDocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
WebBrowser: TWebBrowser;implementation{$R *.dfm}{ TMyThread }procedure TWorkThread.Execute;
begin
Synchronize(run);
end;procedure TWorkThread.run;
begin
CoInitialize(nil);
try
WebBrowser := TWebBrowser.Create(Form1);
WebBrowser.Silent := true;
WebBrowser.ParentWindow := Form1.Handle;
WebBrowser.FullScreen := True;
WebBrowser.OnDocumentComplete := WebBrowserDocumentComplete;
WebBrowser.Navigate('www.baidu.com');
except
WebBrowser.Destroy;
end;
CoUninitialize();
end;procedure TWorkThread.WebBrowserDocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
Doc: IHTMLDocument2;
input: OleVariant;
userinputelement, pwdinputelement: ihtmlinputelement;
access_token: ansistring;
begin
ShowMessage('网页加载完成'); if pos('baidu', PChar(WebBrowser.locationURL)) > 0 then
begin
doc := WebBrowser.document as ihtmldocument2;
userinputelement := (doc.all.item('kw', 0) as ihtmlinputelement);
userinputelement.value := '百度';
input := doc.all.item('su', 0);
input.click;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
TWorkThread.Create(False);
end;end.
修改下调用procedure TForm1.FormCreate(Sender: TObject);
var
myThread: TWorkThread;
begin
myThread := TWorkThread.Create(True);
myThread.FreeOnTerminate := True;
myThread.Resume;
end;
这跟线程创建无关,即使你在按钮中执行创建,只要不可见,就不会触发另外,VCL不是线程安全的,最好不要在线程里创建可视控件
请问如何不保存cookie啊?我提交以后再重新创建线程还是提交后的页面