while webrowser.busy do Application.ProcessMessage;
while WebBrowser1.ReadyState <READYSTATE_COMPLETE do Application.ProcessMessages;
用WaitForSingleObject 应该可以解决,参考如下代码 等待一个指定句柄的进程什么时候结束} function MyThreadFun(p: Pointer): DWORD; stdcall; begin if WaitForSingleObject(hProcess, INFINITE) = WAIT_OBJECT_0 then Form1.Text := Format('进程 %d 已关闭', [hProcess]); Result := 0; end;{启动一个进程, 并建立新线程等待它的结束} procedure TForm1.Button1Click(Sender: TObject); var pInfo: TProcessInformation; sInfo: TStartupInfo; Path: array[0..MAX_PATH-1] of Char; ThreadID: DWORD; begin {先获取记事本的路径} GetSystemDirectory(Path, MAX_PATH); StrCat(Path, '\notepad.exe'); {用 CreateProcess 打开记事本并获取其进程句柄, 然后建立线程监视} FillChar(sInfo, SizeOf(sInfo), 0); if CreateProcess(Path, nil, nil, nil, False, 0, nil, nil, sInfo, pInfo) then begin hProcess := pInfo.hProcess; {获取进程句柄} Text := Format('进程 %d 已启动', [hProcess]); CreateThread(nil, 0, @MyThreadFun, nil, 0, ThreadID); {建立线程监视} end; end;
如果你是用Webbrowser控件的话,你可以先查一下Webbrowser是怎么判断网页是否已经加载完成,然后设置全局变量,在Webbrowser打开网页后设置该全局变量为true,然后在循环里面判断;for i:= 0 to 10 do begin while urlopend do begin {做要做的事情} webbrowser.navigate('http://') {再打开新的页面} urlopened:= false; {做完了设置标志为false} break; {退出while循环,再次进入for循环} end; end;
Application.ProcessMessages;
等待一个指定句柄的进程什么时候结束}
function MyThreadFun(p: Pointer): DWORD; stdcall;
begin
if WaitForSingleObject(hProcess, INFINITE) = WAIT_OBJECT_0 then
Form1.Text := Format('进程 %d 已关闭', [hProcess]);
Result := 0;
end;{启动一个进程, 并建立新线程等待它的结束}
procedure TForm1.Button1Click(Sender: TObject);
var
pInfo: TProcessInformation;
sInfo: TStartupInfo;
Path: array[0..MAX_PATH-1] of Char;
ThreadID: DWORD;
begin
{先获取记事本的路径}
GetSystemDirectory(Path, MAX_PATH);
StrCat(Path, '\notepad.exe'); {用 CreateProcess 打开记事本并获取其进程句柄, 然后建立线程监视}
FillChar(sInfo, SizeOf(sInfo), 0);
if CreateProcess(Path, nil, nil, nil, False, 0, nil, nil, sInfo, pInfo) then
begin
hProcess := pInfo.hProcess; {获取进程句柄}
Text := Format('进程 %d 已启动', [hProcess]);
CreateThread(nil, 0, @MyThreadFun, nil, 0, ThreadID); {建立线程监视}
end;
end;
begin
while urlopend do
begin
{做要做的事情}
webbrowser.navigate('http://') {再打开新的页面}
urlopened:= false; {做完了设置标志为false}
break; {退出while循环,再次进入for循环}
end;
end;