Si que FUNCIONA.
Utilizando los eventos OnBeforeNavigate(), OnDocumentComplete() y OnNavigateComplete2() se consigue lo que quería sin artificios extraños.
Defino dos variables y creo los eventos:
Código Delphi
[-]var
Form1: Tform1;
CurDispatch: IDispatch;
FDocLoaded: Boolean;
implementation
{$R *.dfm}
procedure TACDM.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
CurDispatch := nil;
FDocLoaded := False;
end;
procedure TACDM.WebBrowser1NavigateComplete2(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
if CurDispatch = nil then
CurDispatch := pDisp;
end;
procedure TACDM.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
if (pDisp = CurDispatch) then
begin
FDocLoaded := True;
CurDispatch := nil;
end;
end;
Ahora, en el programa, después de cada acción que requiera una respuesta del servidor pongo:
Código Delphi
[-] repeat Application.ProcessMessages until FDocLoaded;
y eso es todo.
Gracias por vuestra inestimable ayuda.