![]() |
Vom Programm aus auf Webseitenelemente zugreifen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Da mein TWebBrowser (in Delphi 2010) mit den zahlreichen Scripten der Seite ![]() Wie komme ich z. B. an die Handles der Checkboxen? Gruß Rued P.S.: Silent = true für TWebBrowser ist keine Lösung, da die Scripte ausgeführt werden müssen. |
AW: Vom Programm aus auf Webseitenelemente zugreifen
Der IE basierte Webview steckt standardmäßig auf dem Funktionsniveau von IE 6 oder 7 fest. Du kannst ihm per Registry-Eintrag aber sagen, dass für dein Programm ein höheres Niveau gelten soll:
Code:
Der eine ist für 32 Bit, der andere für 64 Bit.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"programmname.exe"=dword:00002af8 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "programmname.exe"=dword:00002af8 Alternativ kannst du schauen ob du den Edge(Chromium) basierten WebView2 mit folgender Komponenten nurtzen kannst: ![]() Oder du automatisierst den Zugriff ganz anders, mit einem Tool wie Selenium? Die Frage ist aber auch: Hat die Seite "Abwehrmaßnamen" und lassen die Nutzungsbedingungen automatisierten Zugriff zu? |
AW: Vom Programm aus auf Webseitenelemente zugreifen
Der TWebBrowser lässt sich auch auf Edge umstellen,
bzw. direkt TEdgeBrowser. ![]() |
AW: Vom Programm aus auf Webseitenelemente zugreifen
Zitat:
|
AW: Vom Programm aus auf Webseitenelemente zugreifen
@omnibrain:
Aktualisierung zu Punkt 2: Die WebView2Loader.dll habe ich zu meinen dlls geschoben und das Post-Build-Ereignis im Projekt hinzugefügt. Jetzt fehlt mir noch die Komponente. |
AW: Vom Programm aus auf Webseitenelemente zugreifen
Das mit der Registry hat nichts mit Delphi zu tun.
Es macht Windows innerhalb der ActiveX-Komponente, welche Delphi hier nutzt. Ohhh, das ist natürlich etwas unpraktisch. :oops: Nja, erstmal kannst dir ja im TWebBrowser anzeigen lassen, was du eigentlich aktuell hast, bzw. es von Seiten des Delphi-Codes auslesen. JavaScript: navigator.appName , navigator.appVersion und navigator.userAgent oder HTML-Conditionals:
HTML-Code:
<!--[if IE 6]> IE6 <![endif]-->
<!--[if IE 7]> IE7 <![endif]--> <!--[if IE 8]> IE8 <![endif]--> ... |
AW: Vom Programm aus auf Webseitenelemente zugreifen
Zitat:
|
AW: Vom Programm aus auf Webseitenelemente zugreifen
Dafür kann man doch auch eine eigene, lokale, HTML-Datei nehmen, es geht doch nur darum herauszufinden, welche IE-Version auf dem eigenen Rechner ist bzw. welche IE-Version vom TWebBrowser im Delphi-2010-Programm emuliert wird. (Und mit der lokalen HTML-Datei kann man dann ggfls. auch prüfen, ob Änderungen in der Registry beim TWebBrowser "ankommen".)
Wenn man das weiß, kann man prüfen, welche IE-Version die Webseite (mindestens) benötigt und dann (mit ein bisserl Glück) für das eigene Programm den erforderlichen Wert in der Registry eintragen. Wird von der WebSeite eine höhere IE-Version benötigt, als man auf dem Rechner hat, wird's halt vergebliche Liebesmüh. Weitere Werte für die Registry, die eventuell zum Erfolg führen könnten: ![]() |
AW: Vom Programm aus auf Webseitenelemente zugreifen
Zitat:
Zitat:
![]() |
AW: Vom Programm aus auf Webseitenelemente zugreifen
Zitat:
|
AW: Vom Programm aus auf Webseitenelemente zugreifen
@himitsu: IE7
@omnibrain: Ja, "programmname.exe" habe ich durch den Dateinamen meines Programms ersetzt. Danke für den Link, schaue ich mir später an. Dank an alle, die hier posten. |
AW: Vom Programm aus auf Webseitenelemente zugreifen
Zitat:
|
AW: Vom Programm aus auf Webseitenelemente zugreifen
Für eine solche antike Delphi-Version wie D2010 benötigt man auf jedenfall die EmbeddedWB-Komponenten wie von hier:
![]() (Leider hat der ursprüngliche Entwickler das Projekt nicht gut übergeben, so es es diverse Versionstände mit unterschiedlichen Fixes für neuere Delphis gibt). Warum ist das nötig: Der TWebbrowser von dieser alten Delphi-Version hat ein paar Bugs und unzulänglichkeiten (z.B. fehlerhafte Referenzzählung bei Interfaces auf HTML-Elemente). in neueren Delphi-Versionen wurden diese gefixt, so das man dann direkt TWebbrowser nutzen konnte.. Das CEF (Chromium Embedded Framework) hatten wir einige Zeit genutzt, da TWebbrowser auch im IE11 einfach zu langsam und zu viele Fehler beim Render komplexerer Webdaten hatte. Mittlerweile sind wir bei TEdge-Control von Delphi 10.4. Damit sparen wir die mittlerweile sehr große Runtime mitzuliefern und haben auch MP4 "out of the box" dabei. Ich würde auf jedenfalls mal aktuelles Delphi in der Community-Edition anschauen. Würde heute nicht mehr (von 10.4) zurück auf eine solch alte Delphi-Version wollen. Zu groß sind die Vorteile der moderneren VCL und der Sprachfeatures. Und gefühlt ist es (Unser weg war D6 -> XE6 -> 10.2 -> 10.4) das stabilste Delphi das wir bisher hatten. |
AW: Vom Programm aus auf Webseitenelemente zugreifen
Liste der Anhänge anzeigen (Anzahl: 2)
@Bernhard Geyer:
Die EmbeddedWB-Komponenten habe ich früher verwendet, dann wieder rausgeschmissen, will ich sie jetzt wieder installieren, kommt die Fehlermeldung, "Fehler im Modul: Modul-Header fehlt oder ist fehlerhaft". Die Community-Edition 10.4 versuche ich seit drei Tagen zu registrieren, mit dem im Anhang sichtbaren Ergebnis. Der kontaktierte Support unterstellt, ich hätte das falsche Produkt installiert: Zitat:
Gruß Rued |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 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