Einzelnen Beitrag anzeigen

endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#30

Re: TWebBrowser < undefinierter Bezeichner

  Alt 16. Aug 2004, 11:20
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?
  Mit Zitat antworten Zitat