AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Zugriffsverletzung bei nicht sichtbarem TWebBrowser
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei nicht sichtbarem TWebBrowser

Ein Thema von Ajintaro · begonnen am 8. Dez 2015 · letzter Beitrag vom 9. Dez 2015
Antwort Antwort
Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#1

Zugriffsverletzung bei nicht sichtbarem TWebBrowser

  Alt 8. Dez 2015, 16:27
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?
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser

  Alt 8. Dez 2015, 16:44
Der IE braucht einen Windows-Handle zum richtig arbeiten.
Evtl. reicht ein .HandleNeeded-Aufruf auf.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser

  Alt 8. Dez 2015, 16:45
unelegante Billiglösung:
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  PageControl1.ActivePageIndex = 1; // Index der Seite, auf der sich der "Übeltäter" befindet.
end;
(Alternativ: Sofern eine "Beenderoutine" vorhanden, dort den ActivePageIndex ändern.)

Eventuell beim Beenden einen von den Beiden versuchen:
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WebBrowser1.Stop;
  WebBrowser1.Quit;
end;
In einer Schleife warten, bis WebBrowser1.Busy = false; ist.
Delphi-Quellcode:
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;
(Alles nur so hingedaddelt und ungetestet, keine Garantie für Wirksamkeit.)
  Mit Zitat antworten Zitat
Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#4

AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser

  Alt 8. Dez 2015, 16:58
Hallo,

danke für die Antworten. Also
Delphi-Quellcode:
WebBrowser1.Stop;
WebBrowser1.Quit;
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.
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser

  Alt 8. Dez 2015, 17:32
Eventuell hier?

https://groups.yahoo.com/neo/groups/...ns/topics/7329
Zitat:
I checked the code I am using for dynamically creating a form that has a
webbrowser (TEmbeddedWB) on it and all I do before the form is shown is
call handleneeded then I nav to the URL.
oder
http://stackoverflow.com/questions/2...wser-component
Zitat:
Call WebBrowser1.HandleNeeded; before navigating to an address.
  Mit Zitat antworten Zitat
Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#6

AW: Zugriffsverletzung bei nicht sichtbarem TWebBrowser

  Alt 9. Dez 2015, 11:37
Ah vielen Dank - man setzt es vor dem Navigate ein. Prima, das hat das nervige Problem gelöst!
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz