hallo,
danke für deine mühe =),
nun bin ich schon ein ganzes stück weiter dank deiner hilfe,
leider gibts noch immer zugriffsverletzungen =(
die threads werden in der hauptform nun wie folgt erzeugt:
Delphi-Quellcode:
for Loop := 0 to length(ThreadArray) - 1 do
begin
ThreadArray[Loop] := TMyThreads.Create(true);
ThreadArray[Loop].app := Application;
...
end;
die thread
unit hab ich wie folgt geändert:
Delphi-Quellcode:
procedure TMyThreads.Execute;
var
WebBrowser: TWebBrowser;
begin
OleInitialize(
nil);
WebBrowser:= TWebBrowser.Create(
nil);
with WebBrowser
do
try
OnDocumentComplete:= Submit;
Navigate('
http://www.google.com');
while WebBrowser.ReadyState <> READYSTATE_COMPLETE
do
app.ProcessMessages;
Fstatus:= '
ReadyState done.';
Synchronize(UpdateLVCaption);
except
FreeAndNil(WebBrowser);
OleUninitialize;
end;
Fstatus:= '
finished.';
Synchronize(UpdateLVCaption);
end;
procedure TMyThreads.Submit(Sender: TObject;
const pDisp: IDispatch;
var URL: OleVariant);
begin
Fstatus:= '
sending.';
Synchronize(UpdateLVCaption);
// (Sender As TWebBrowser).OleObject.document.forms.item(0).elements.item('q').value:='test';
// (Sender As TWebBrowser).OleObject.Document.Forms.item(0).submit;
FreeAndNil(Sender);
OleUninitialize;
end;
Wenn ich den Form-Submit auskommentiere erhalte ich die Fehlermeldung:
Zitat:
Im Projekt ... ist eine
Exception der Klasse EAccessViolation aufgetreten.
Meldung: Zugriffsverletzung bei Adresse 70AB7CCB in Modul SHLWAPI.dll.
Lesen von Adresse 00000018. ...
Wenn ich das
OLE Objekt wieder aktiviere um es dann aus`zufüllen und abzuschicken
gibt es ebenfall eine Zugriffsverletzung. Zumindesten funktioniert
das OnDocumentComplete Event jetzt.
Des öfteren scheint es auch vorzukommen dass das Programm bzw der/die Threads
in der ReadyState - while Schleife einfrieren.
Hast Du vielleicht noch eine Idee wie man diese Fehler beheben könnte?