CEFSharp (Chromium Embedded Framework) in Interop User Control
Ich versuche, die CefSharp CLR-Bindungen für das Chromium Embedded Framework zu verwenden, um ein alternatives Webbrowser-Steuerelement zu erstellen, das in eine Anwendung eingebettet werden kann, die nur ältere ActiveX-Steuerelemente (WonderWare InTouch HMI) unterstützt, um HTML5-Unterstützung für einige zu erhalten alte maschinen.
Bisher habe ich ein Interop User Control mit dem erstelltMicrosoft InteropForms Toolkit und bettete ein CefSharp.WinForms-WebView auf ziemlich einfache Weise in das Steuerelement ein, d.h.
Private Sub WebControl_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim Settings = New CefSharp.Settings
If (CEF.Initialize(Settings)) Then
WebView = New WebView(homepage, New BrowserSettings())
WebView.Dock = DockStyle.Fill
End If
Me.Controls.Add(WebView)
End Sub
Wenn ich die DLL erstelle, registriere ich sie über den Befehl
regasm / tlb / codebase Cefsharp.WebControl.dll
Dies scheint zum größten Teil zu funktionieren, aber ich habe einige Probleme, die ich nicht vollständig verstehe. Ich teste es mit den VBA-Formularen in Excel (aus rein praktischen Gründen) und wenn ich den Form Builder verwende, initialisiert er das Steuerelement tatsächlich, wenn es dem Benutzerformular hinzugefügt wird, und lädt die Webseite perfekt:
Wenn ich jedoch versuche, die UseForm anzuzeigen, scheint sie entweder das Handle oder die Instanz der Webansicht (oder beides) zu zerstören, und ich kann nicht herausfinden, wie dies behoben werden kann. Einmal versuche ich das Formular zu zeigen und probiere sowas
Sub Test()
WebForm.Show
WebForm.WebControl.Navigate "www.google.com"
End Sub
Ich erhalte eine Fehlermeldung, dass das Objekt nicht existiert. Ich habe ein bisschen rumgespielt und manchmal bekomme ich verschiedene Fehler, als ob der Zeiger ungültig wäre, aber bisher habe ich nicht herausgefunden, wie man ihn richtig einrichtet. Ich denke, es ist ein Problem mit der Behandlung der User Form-Ereignisse, aber ich bin nicht sicher.
Wenn jemand etwas darüber weiß, würde ich es sehr schätzen. Vielen Dank!