![]() |
EOleException bei TWebBrowser.Navigate
(Delphi 7 Personal unter Windows XP Home, IE7)
Hallihallo ihr, ein weiteres Mal Probleme mit TWebBrowser. Ich verwende den, um eine Seite auf Änderungen im Quelltext zu überprüfen. Zur Seite: Es gibt 2 verschiedene Versionen der Seite (sprich eine URL, aber über eine Zufallsvariable ändert sich der sichtbare Inhalt), wobei es kein Problem ist, die Seiten zu unterscheiden, ich mach das mit
Delphi-Quellcode:
und durchforste dann den Quelltext. Ist es Seite A, soll ein A-spezifischer Code ausgeführt werden, bei B B-spezifischer Code. Danach soll die Seite neu geladen werden.
Hugo := WebBrowser.OleObject.Document.Body.InnerHtml;
Leider hab ich hierbei folgendes Problem, und zwar eine EOleException "Die angeforderte Ressource wird bereits verwendet.", die ausgelöst wird von WebBrowser.Navigate(myURL); im DocumentComplete-Block. Vereinfacht:
Delphi-Quellcode:
Offensichtlich kann ich im DocumentComplete-Block nicht auch WebBrowser zugreifen oder zumindest nicht Navigate() aufrufen, warum auch immer. Weiß einer, wie ich dieses Problem beheben kann? Mit Navigate2() klappt es auch nicht, habe ich schon probiert.
procedure TForm1.btStartClick(Sender: TObject);
begin WebBrowser.Navigate(myURL); end; procedure TForm1.WebBrowserDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin //Code, um zwischen A und B zu entscheiden und dann //Ausfuehren des seitenspezifischen Codes WebBrowser.Navigate(myURL); end; Der Sinn dieser Struktur ist halt, dass nach Fertigladen der Seite zuerst überprüft und alles wichtige ausgeführt wird und danach die Seite neu geöffnet wird, um zu schauen, wie die Seite dieses Mal aussieht. Bin ich grad komplett auf dem falschen Dampfer? =) Würd mich über eine weiterbringende Antwort freuen. Grüßle Daniel |
Re: EOleException bei TWebBrowser.Navigate
Hallo
Gibt es einen Grund, warum du eine visuelle Komponente zum holen des Quelltext verwendest? Warum machst du es z.B nicht mit TIdHTTP ? Zudem: - Wenn du im OnDocumentComplete Navigate() aufrufst, landest du doch in einer Endlosschleife. - Wenn die Seite Frames enthält, wird OnDocumentComplete mehrmals aufgerufen. |
Re: EOleException bei TWebBrowser.Navigate
Huhu,
naja, ich hatte den Code schon gewaltig gekürzt, da macht dann die Komponente vielleicht nicht wirklich Sinn, stimmt. Allerdings gibt es in dem seitenspezifischen Code-Teil Anweisungen für einzelne Elemente, die angesprochen werden sollen (Buttons, Edit-Felder), die ich über TWebBrowser unkompliziert bekomme und auch den Wert auslesen kann. Zudem soll das ganze einfach auch angezeigt werden, also die Seite. Eine Abbruchbedingung für die Endlosschleife gibt es auch, einerseits einen Button, andererseits soll das Ganze anhalten, wenn eine der beiden Seiten x-mal aufgerufen wurde. Ich hatte das alles weggelassen, weil es für das eigentliche Problem irrelevant ist, und zwar dass Navigate() im OnDocumentComplete-Block eine Exception wirft. Frames hat die Seite nicht, also würde das so schon passen. Ich weiß nur nicht, warum das nicht funktioniert, so wie ich das vorhabe. Ist das ein TWebBrowser-Problem? Weiß einer, ob das mit der TMozilla-Komponente funktionieren würde? Oder kann man der TWebBrowser-Komponente irgendwie anders mitteilen, dass sie nach der erfolgreisen Seitenanalyse neu laden soll? Ich habe es über WebBrowser.Refresh; versucht, aber das funktioniert nicht, weil dann die Meldung kommt, dass Daten übertragen wurden und diese neu abgeschickt werden müssten, und wenn ich diese mit "Wiederholen" nochmal absende, bekomme ich jedes mal die gleiche Seite. Entspricht ja dann dem F5 im Browser, wenn man auf eine dynamische Seite kommt. |
Re: EOleException bei TWebBrowser.Navigate
Ich habe beim Testen myURL die Seite von Google.com zugewiesen. Bekam keine EOleException.
Liegt wohl an deiner Seite oder deinem Code. Vielleicht könntest du mal ein vereinfachtes Beispiel Projekt hochladen, wo man den Fehler reproduzieren kann. Wegen WebBrowser.Refresh: Es gibt auch ein WebBrowser. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz