![]() |
Zugriffsverletzung bei nicht sichtbarem TWebBrowser
Hallo DP,
Eine gewisse Zugriffsverletzung nervt mich schon seit geraumer Zeit, ich kann sie auch immer wieder nachstellen: Ich habe eine Demo-Anwendung gebaut mit nichts außer einem Pagecontrol (zwei pages) und einem TWebrowser (auf page 2). Sobald der Browser eine Navigation durchführt und man das Programm beendet, bevor die Page fertig geladen hat gibt es eine Zugriffsverletzung, wenn der Browser nicht sichtbar ist. (TWebBrowser ist auf Page 2) Ich hatte das schon häufiger in Anwendungen mit TWebbrowser und ich konnte noch keine Lösung dafür finden. Wie kann ich die Anwendung sauber beenden, auch wenn die Page noch nicht fertig geladen hat UND nicht sichtbar ist? |
AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser
Der IE braucht einen Windows-Handle zum richtig arbeiten.
Evtl. reicht ein .HandleNeeded-Aufruf auf. |
AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser
unelegante Billiglösung:
Delphi-Quellcode:
(Alternativ: Sofern eine "Beenderoutine" vorhanden, dort den ActivePageIndex ändern.)
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin PageControl1.ActivePageIndex = 1; // Index der Seite, auf der sich der "Übeltäter" befindet. end; Eventuell beim Beenden einen von den Beiden versuchen:
Delphi-Quellcode:
In einer Schleife warten, bis
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin WebBrowser1.Stop; WebBrowser1.Quit; end;
Delphi-Quellcode:
ist.
WebBrowser1.Busy = false;
Delphi-Quellcode:
(Alles nur so hingedaddelt und ungetestet, keine Garantie für Wirksamkeit.)
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin // Keine Ahnung, ob hier die Gefahr einer Endlosschleife besteht, // weil Busy beim Programmbeenden eventuell nicht mehr false werden sollte... if WebBrowser1.Busy then repeat WebBrowser1.Stop; WebBrowser1.Quit; Sleep(1000); until not WebBrowser1.Busy; end; |
AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser
Hallo,
danke für die Antworten. Also
Delphi-Quellcode:
verursacht einen unbekannten Fehler. Nach etwas Recherche wird deutlich, dass HandleNeeded wohl das Problem löst. Allerdings bin ich mir nicht sicher wo man das platziert.
WebBrowser1.Stop;
WebBrowser1.Quit; |
AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser
Eventuell hier?
![]() Zitat:
![]() Zitat:
|
AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser
Ah vielen Dank - man setzt es vor dem Navigate ein. Prima, das hat das nervige Problem gelöst!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 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-2025 by Thomas Breitkreuz