Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TWebbrowser (https://www.delphipraxis.net/180505-twebbrowser.html)

youuu 24. Mai 2014 11:58

TWebbrowser
 
Hi ich hab ein Problem mit dem TWebbrowser und zwar sagt Delphi laut Registry das die Version "9.11.9600.17041" verwendet wird.
Wenn ich aber den "echten" IR starte, steht dort die Version "11.0.96.00.17107"

Wie kann das sein und wie kann ich Delphi die richtige Version mitgeben?


Hauptgrund ist dieser hier

"
Internet Explorer verfügt über eine Kompatibilitätsansicht (auch Kompatibilitätsmodus genannt), die Auswirkungen darauf hat, wie manche Websites angezeigt werden. Ist die Kompatibilitätsansicht für google.com aktiviert, kann es bei einigen Google-Produkten zu Anzeigefehlern kommen, zum Beispiel bei Gmail, Google+ oder Google Maps. Wir empfehlen daher, google.com aus der Liste der Websites mit aktivierter Kompatibilitätsansicht zu entfernen.
"

Laut original IE ist die Kompatibilitätsansicht deaktiviert, allerdings im TWebbrowser erhalte ich genau diesen Fehler, als wenn dieser die Kompatibilitätsansicht verwendet.

mkinzler 24. Mai 2014 13:28

AW: TWebbrowser
 
TWebBrowser ist ein Warper um das WebBrowser ActiveX-Control und nicht um den standalone Browser.
Meht Features bieten andere embedded Browser Komponenetn wie z.B. chromium embedded oder TGeckoBrowser/Gecko SDK for Delphi

youuu 24. Mai 2014 13:50

AW: TWebbrowser
 
Das bedeutet das ich das Problem mit dem TWebbrowser nicht beheben kann, sondern chromium embedded installieren sollte?

jaenicke 24. Mai 2014 13:55

AW: TWebbrowser
 
Delphi XE6 benutzt eine aktuellere Version des Controls. Vorher kann man zwar irgendwelche Registryeinstellungen setzen, aber erstens funktioniert das weniger gut und zweitens müsste man es global auf dem Zielrechner machen. Das wiederum kann dann mit anderen Programmen Probleme machen.

Wenn du auf aktuelle Features angewiesen bist, ist Chromium embedded derzeit die sinnvollste Variante. Mit dem Gecko Control habe ich nur schlechte Erfahrungen gemacht.

youuu 24. Mai 2014 14:13

AW: TWebbrowser
 
XE6 habe ich leider nicht.
Dann werde ich es mal mit Chromium embedded probieren.

greenmile 24. Mai 2014 16:51

AW: TWebbrowser
 
Vom Chromium bin ich persönlich enttäuscht, es stürzt gerne unkontrolliert ab und Du hast viele Features (SSO etc.) nicht; allerdings hält sich der IE nicht 100% an die CSS Normen, damit kann ich aber leben. Der EmbeddedWB läuft m.A. am besten, musst Du aber letztendlich selbst entscheiden.

EmbeddedWB kapselt den IE, allerdings musst Du dem Embedded-Control sagen, welche IE Version er emulieren soll. Das definierst Du in der Registry:

; 10000 = Version 10
; 9000 = Version 9
; 8000 = Version 8
; 0 = Aktuell installierte
HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULA TION

Siehe http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

greenmile 24. Mai 2014 16:53

AW: TWebbrowser
 
Zitat:

Zitat von jaenicke (Beitrag 1260090)
Delphi XE6 benutzt eine aktuellere Version des Controls. Vorher kann man zwar irgendwelche Registryeinstellungen setzen, aber erstens funktioniert das weniger gut und zweitens müsste man es global auf dem Zielrechner machen. Das wiederum kann dann mit anderen Programmen Probleme machen.

Das funktioniert bei mir auf einigen hundert Client-PC's einwandfrei. Allerdings musst Du den Namen der EXE angeben. Wenn der natürlich doppelt vorhanden ist, dann könnte es ein Problem sein.

himitsu 24. Mai 2014 19:44

AW: TWebbrowser
 
Zitat:

Zitat von greenmile (Beitrag 1260098)
EmbeddedWB kapselt den IE, allerdings musst Du dem Embedded-Control sagen, welche IE Version er emulieren soll.

Wobei das dann doch für alle Programme gilt, welche dieses verwenden.

Angefangen bei der OH, über das HelpInsight und sonstige Programme.
Man sollte dann also auch beachten, daß dann eventuell irgendwo etwas nicht mehr richtig laufen kann.


Zitat:

allerdings hält sich der IE nicht 100% an die CSS Normen
Je nach Quelle der Daten (z.B. Intranet) wird CSS und JavaScript beim IE auch gerne mal teilweise deaktiviert.
Das ist beim Chromium nicht so.

greenmile 24. Mai 2014 21:01

AW: TWebbrowser
 
Nein es gilt (natürlich) nicht für alle, siehe MSDN. Du musst schon die EXE angeben, die es betrifft, anders macht es doch keinen Sinn.

Code:
HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
   SOFTWARE
      Microsoft
         Internet Explorer
            Main
               FeatureControl
                  FEATURE_BEHAVIORS
                     contoso.exe = (DWORD) 00000000
Statt contoso.exe musst Du halt Deine EXE angeben, dahinter als DWord die IE Version, die emuliert werden soll:

10000 = Version 10
9000 = Version 9
8000 = Version 8
0 = Aktuell installierte

Wie in einem anderen Thread geschrieben habe ich 2 Tage mit Chromium rumgeeirt und es letztendlich (leider!) gelassen. Zu unberechenbar, zumindest im Moment.

himitsu 24. Mai 2014 21:17

AW: TWebbrowser
 
Ahhh ok, hätte dann besser mal ins MSDN reingucken sollen. :oops:

Na dann isses ja OK.


Was ist denn der Standardwert?
Bei mir gibt's da keine Einträge und wenn 0 = aktuelle Version heißt, dann würde ich jetzt vermuten daß ich es durch einen Eintrag nicht höher einstellen kann. :gruebel:

jaenicke 24. Mai 2014 21:38

AW: TWebbrowser
 
Zitat:

Zitat von greenmile (Beitrag 1260115)
Wie in einem anderen Thread geschrieben habe ich 2 Tage mit Chromium rumgeeirt und es letztendlich (leider!) gelassen. Zu unberechenbar, zumindest im Moment.

Eine Vermutung wäre, dass es an CEF1 vs. CEF3 liegt. Wir nutzen noch CEF1 und haben damit keinerlei Probleme. Flash und ähnliches brauchen wir allerdings nicht.

greenmile 25. Mai 2014 07:19

AW: TWebbrowser
 
Es kann leider nicht an Flash liegen, weil es schon im Constructor crasht, also noch lange bevor ich aktiv etwas im Programm machen könnte. Ist allerdings die CEF3, vielleicht sollte ich es mal mit der CEF1 probieren? Gibt es da etwas für XE6?

greenmile 25. Mai 2014 07:20

AW: TWebbrowser
 
Zitat:

Zitat von himitsu (Beitrag 1260117)
Bei mir gibt's da keine Einträge und wenn 0 = aktuelle Version heißt, dann würde ich jetzt vermuten daß ich es durch einen Eintrag nicht höher einstellen kann. :gruebel:

0 = die höchstmögliche, auf dem System installierte Version
Höher als die Version, die auf dem System installiert ist? Wie soll das den gehen?

himitsu 25. Mai 2014 12:41

AW: TWebbrowser
 
Ja, daß heißt dann doch aber auch, daß diese Registry-einträge nutzlos sind, zumindestens bezüglich zu alter TWebBrowser-IE-Versionen, denn man kann darüber dann doch nur Downgraden?

jaenicke 25. Mai 2014 13:33

AW: TWebbrowser
 
Es gibt wie ich schon geschrieben hatte eine weitere globale Einstellung, mit der man auch upgraden kann, wenn man das alte Control nutzt. Jedoch wie schon geschrieben erstens nicht wirklich zuverlässig und zweitens funktioniert dennoch nicht alles 100%ig.

greenmile 25. Mai 2014 16:03

AW: TWebbrowser
 
Zitat:

Zitat von himitsu (Beitrag 1260163)
Ja, daß heißt dann doch aber auch, daß diese Registry-einträge nutzlos sind, zumindestens bezüglich zu alter TWebBrowser-IE-Versionen, denn man kann darüber dann doch nur Downgraden?

Naja, zum einen ist man damit auf Wunsch abwärtskompatibel, zum anderen wird nicht automatisch die neueste Version verwendet (sondern 6 oder 7, weiß ich gerade nicht). Mit dem Flag 0 wird definiert, dass Du explizit die neueste Version verwenden möchtest. Falls das nicht geht, dann halt die 9'er. Oder 8'er. So einen kompatiblitätslevel würde ich mir, ehrlich gesagt, bei manchen externen Anwendungen mal wünschen.

Letztendlich muss jeder selbst entscheiden, ob er wegen einer simplen Webanzeige rund 30 MByte Runtimes mit sich rumschleppen will, nur um halt einfach nicht den IE verwenden zu müssen, es aber im Endeffekt in 99% der Fälle gleich aussieht. CSS Anzeigeprobleme sind was anderes, da braucht man u.U. ne andere Runtime wie Chromium.

greenmile 25. Mai 2014 16:04

AW: TWebbrowser
 
Zitat:

Zitat von jaenicke (Beitrag 1260167)
Es gibt wie ich schon geschrieben hatte eine weitere globale Einstellung, mit der man auch upgraden kann, wenn man das alte Control nutzt. Jedoch wie schon geschrieben erstens nicht wirklich zuverlässig und zweitens funktioniert dennoch nicht alles 100%ig.

Wieso nicht zuverlässig? Bei mir tut die schon seit langer Zeit zuverlässig ihren Dienst.

jaenicke 25. Mai 2014 18:01

AW: TWebbrowser
 
Sei froh. ;-)
Bei dir funktioniert das, bei uns Chromium. ;-)

greenmile 25. Mai 2014 19:05

AW: TWebbrowser
 
Touché

greenmile 26. Mai 2014 08:13

AW: TWebbrowser
 
@jaenicke: Gibt es die CEF1 auch für XE6? Ich habe leider nichts gefunden, würde es aber auch mal testen ob die läuft.

jaenicke 26. Mai 2014 08:34

AW: TWebbrowser
 
Wir haben die neueste Version in unser Haupt-Package eingebunden und aktualisieren die Packages ggf. selbst. Ich kann mich zwar nicht erinnern, dass Anpassungen nötig waren, aber wenn, dann sicher nur kleine.

(Da dort glaube ich with nicht benutzt wird, der Quelltext also in der Hinsicht sauber ist, ist es auch unwahrscheinlich, dass dort mehr nötig ist als die Versions-IFDEFs zu aktualisieren. Probleme machte bei uns in den letzten Versionen abgesehen von Unitverschiebungen in Delphi selbst beim Umstieg auf neuere Versionen nur with, aber das ist ja logisch.)

greenmile 26. Mai 2014 09:06

AW: TWebbrowser
 
Also auch die CEF3? Schade, war ein Versuch.

jaenicke 26. Mai 2014 09:17

AW: TWebbrowser
 
Ich hab kurz geschaut, beide sind für XE5 angepasst worden. Es gibt (in CEF1) nur eine relevante Änderungen bei uns:
ceflib.pas, in TCefCustomStreamReader.Seek:
Delphi-Quellcode:
    Result := FStream.Seek(offset, whence);
// ersetzt durch:
    Result := FStream.Seek(offset, TSeekOrigin(whence));
Und in der .inc Datei ist natürlich XE6 neu eingetragen. Alles andere funktioniert einfach so mit XE6.

greenmile 26. Mai 2014 09:27

AW: TWebbrowser
 
Das es bei der Initialisierung knallt denke ich, dass sich da 2 Speicherbereiche beißen, also zwei Dinge auf denselben Bereich zugreifen. Ein leeres Projekt funktioniert, ein bestehendes nicht. Natürlich habe ich der Reihe nach alles rausgeworfen, komme dem Problem aber einfach nicht auf die Spur. Es sind nur Standard-Komponenten von TMS, Raize und die eigenen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 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