| Zitat: |
Zum einen wird die Warteschleife bis das Dokument fertig geladen wird
oftmals nicht verlassen |
Warteschleife? Was meinst du damit?
| Zitat: |
| und zweitens bekomm ich eine Zugriffverletzung wenn ich auf Elemente der Webseite Einfluss nehmen möchte (OleObject). |
Probiere es mal mit Synchronize();
| Zitat: |
Mein Code schaut zur Zeit wie folgt aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| MainUnit ******************************************************** for Loop := 0 to length(ThreadArray) - 1 do begin ThreadArray[Loop] := TMyThreads.Create(true); ThreadArray[Loop].app := Application; ... ******************************************************** | |
Das macht man übrigens nicht so, sondern so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| ThreadArray[Loop] := TMyThreads.Create(True); ThreadArray[Loop].Priority := tpIdle; ThreadArray[Loop].FreeOnTerminate := True; ThreadArray[Loop].app := Application; ThreadArray[Loop].Resume; |
| Zitat: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| ThreadUnit: ******************************************************** type TMyThreads = class(TThread) public app : TApplication;
procedure TMyThreads.Execute; var WebBrowser: TWebBrowser; begin OleInitialize(nil); WebBrowser:= TWebBrowser.Create(nil); with WebBrowser do try OnDocumentComplete:= Self.Submit; Navigate('http://www.google.com');
while WebBrowser.ReadyState <> READYSTATE_COMPLETE do app.ProcessMessages;
except FreeAndNil(WebBrowser); OleUninitialize; end; end; | |
Auf das Synchronize() achten... Alleine das app.ProcessMessages sollte man schon damit aufrufen...
Übrigens führt dieser Code glaube ich zwangsläufig zu einem Fehler, wenn ich mich nicht täusche!
Warum erstellst du Komponente eigentlich erst im Thread?
mfg
Martin W.
---
Sollte ich was falsches geschrieben haben, korregiere mich bitte!