Einzelnen Beitrag anzeigen

Benutzerbild von gubbe
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
137 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Twebbrowser, edge verwenden wenn vorhanden greift nicht

  Alt 8. Mär 2022, 09:43
Es gibt eine einfachere Möglichkeit, das Benutzerdatenverzeichnis zu setzen:
Code:
 SetEnvironmentVariable('WEBVIEW2_USER_DATA_FOLDER', PWideChar(EdgeUserDataFolder));
Zum Beispiel im Initialization-Teil der Unit oder im Projektquelltext vor dem Erstellen des Forms.

Die Variante mit dem Zugriff auf die geschützte Funktion "GetEdgeInterface" hat neben dem etwas unschönen "Hack" den Nachteil, dass der Browser ggf. schon initialisiert wurde und versucht hat, das Datenverzeichnis im Programmverzeichnis anzulegen. Das dann notwendige erneute Initialisieren des Webviews würde mich auch stören.

Mit dem Setzen von Environment-Variablen kann man auch weitere Parameter beeinflussen.
Als Beispiel zusätzliche Parameter, die man auch bei Chrome per Kommandozeile übergeben kann:
Code:
SetEnvironmentVariable('WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS', '--allow-file-access-from-files');
Damit wird z.B. das Lesen lokaler Dateien erlaubt, wenn man lokale HTML-Dateien anzeigt (und auch nur dann sollte man das aktivieren)

Es wäre natürlich schöner, wenn Embarcadero daran gedacht hätte, das Initialisieren des Webviews in einer abgeleiteten Klasse überschreibbar zu machen, aber mit den Environment-Variablen kann man sich zumindest ohne weitere Hacks behelfen.
  Mit Zitat antworten Zitat