Chromium in vb.net und C# WinForms

    • VB.NET
    • .NET (FX) 4.5–4.8

    Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

      Chromium in vb.net und C# WinForms

      Da ich selber eine Weile gesucht habe, wo ich ein anderes gutes Webbrowser Framework finde, wollte ich nun dieses mal präsentieren.
      Bei einem HTML5-Test von html5test.com erzielt er 500 von 555 Punkte, mein aktuelles Chrome schafft 519 von 555.

      Im Vergleich, mein Chrome:

      Das ganze kommt als NuGet-Paket:
      Projekt - NuGet Pakete und dort dann nach CefSharp suchen.
      Hier muss man CefSharp.WinForms by The CefSharp Authors installieren.
      Das ganze funktioniert nur, wenn man bei Build unter dem Konfigurationen die Platform auf x64 stellt.
      Im Designer kann man nun ein Panel names panBrowser hinzufügen, welches später den WebBrowser darstellen wird.

      Der normale Code für Chromium in vb.net:

      VB.NET-Quellcode

      1. Imports CefSharp.WinForms
      2. Imports CefSharp
      3. Public Class Form1
      4. Private WithEvents browser As ChromiumWebBrowser
      5. Public Sub New()
      6. InitializeComponent()
      7. Dim settings As New CefSettings()
      8. CefSharp.Cef.Initialize(settings)
      9. browser = New ChromiumWebBrowser("https://html5test.com")
      10. panBrowser.Controls.Add(browser)
      11. End Sub
      12. End Class


      Und für C#:

      C#-Quellcode

      1. Imports CefSharp.WinForms
      2. Imports CefSharp
      3. Public Class Form1
      4. Private WithEvents browser As ChromiumWebBrowser
      5. Public Sub New()
      6. InitializeComponent()
      7. Dim settings As New CefSettings()
      8. CefSharp.Cef.Initialize(settings)
      9. browser = New ChromiumWebBrowser("http://thechriskent.com") With {
      10. .Dock = DockStyle.Fill
      11. }
      12. panBrowser.Controls.Add(browser)
      13. End Sub
      14. End Class


      Und fertig ist ein normaler Chrome Webbrowser. Mit diesem funktioniert kein Flash, auch wenn man dieses installiert hat. Momentan läuft er bei mir auf Chrome Dev 55.0.2883.87.
      Jetzt kann man natürlich noch Controls hinzufügen, aber an sich funktioniert der Browser schon ein Mal besser als der Standard-Webbrowser.

      Hier noch ein paar nützliche Methoden:

      VB.NET-Quellcode

      1. browser.back 'Zurück
      2. browser.ShowDevTools 'Entwicklerkonsole zeigen
      3. browser.CloseDevTools 'Entwicklerkonsole schließen
      4. browser.Reload 'Seite aktualisieren
      5. browser.ViewSource 'Quellcode anzeigen
      6. browser.Load("Webseite") 'Webseite laden

      Ich hoffe, ich konnte euch noch ein bisschen helfen.

      Den Code habe ich von hier.
      CefSharp bei Github
      Die beste maschinelle Übersetzung der Welt - DeepL Übersetzer
      Alle Zitate, die ich seit dem 1.9.2017 übersetzt habe, wurden vollautomatisch mit DeepL übersetzt.



      Hallo Zusammen,

      Ich bin wie oben beschrieben vorangegangen, soweit auch alles in Ordnung - Verweise sind da - Plattform auf x64 usw..

      Doch das Steuerelement (panBrowser) von dem hier die rede ist, finde ich leider nicht in der Toolbox.
      Wäre euch sehr dankbar wenn mir diesbezüglich jemand weiterhelfen könnte.

      Habe es mit der Obengenannten Version sowie mit der aktuellen "CefSharp.WinForms 67.0.0" versucht jedoch erfolglos.Ich hätte lediglich einen einfachen Webbrowser (Chrome) auf dem eine bestimmte HTML5 Website darstellt wird und das bestmöglich in einem KIOSK_Modus ohne Adressleiste usw... wie oben bereits dargestellt.

      Vielen Dank schon mal und Grüße,
      Kevin
      Heyho :)

      Danke dir sehr für das Tutorial.

      Ich bin damals mit Webbrowser aufgewachsen.

      Wie kann ich eine URL laden, von dem ich die HTML Datei herunterladen kann von der URL?

      Und wie kann ich das so einstellen, dass er erst die HTML Datei herunterlädt, nachdem die Webseite vollständig geladen ist?

      Danke für das Feedback!

      Semiconductor schrieb:

      Wie kann ich eine URL laden, von dem ich die HTML Datei herunterladen kann von der URL?

      Bitte was?
      Erklär das mal verständlich, ich versteh da nichts.

      Semiconductor schrieb:

      Und wie kann ich das so einstellen, dass er erst die HTML Datei herunterlädt, nachdem die Webseite vollständig geladen ist?


      Die "HTML-Datei" ist die Webseite. Wie soll die Seite denn gerendert werden, wenn kein HTML runtergeladen wurde?
      Ich möchte den Quellcode einer Website in einen String gespeichert haben, nachdem die Webseite mittels des Browsers vollständig geladen wurde. Dabei möchte ich ,dass der Code erst dann fortgesetzt wird, wenn mindestens der gesamte Body der Webseite geladen wurde. Ich scheitere an der Umsetzung der synchronen/seriellen Bearbeitung dieser Abfolge.

      In der Dokumentation ist folgendes enthalten:

      C#-Quellcode

      1. //Wait for the page to finish loading (all resources will have been loaded, rendering is likely still happening)
      2. browser.LoadingStateChanged += (sender, args) =>
      3. {
      4. //Wait for the Page to finish loading
      5. if (args.IsLoading == false)
      6. {
      7. browser.ExecuteJavaScriptAsync("alert('All Resources Have Loaded');");
      8. }
      9. }
      10. //Wait for the MainFrame to finish loading
      11. browser.FrameLoadEnd += (sender, args) =>
      12. {
      13. //Wait for the MainFrame to finish loading
      14. if(args.Frame.IsMain)
      15. {
      16. args.Frame.ExecuteJavaScriptAsync("alert('MainFrame finished loading');");
      17. }
      18. };


      Wie wäre dazu der VB.NET Pendant? Das Aufrufen bereitet mir Probleme.

      MfG

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Semiconductor“ ()

      Zeile#2 und #12 sind EventHandler-Definitionen, also für Z#2:

      VB.NET-Quellcode

      1. Private Sub browser_LoadingStateChanged(sender As Object, args As EventArgs) Handles browser.LoadingStateChanged
      Den Rest bekommst bestimmt Du selber hin.
      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

      Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.