我正在尝试使用 Chromium Embedded Framework 的 CefSharp CLR 绑定来创建一个替代的 Web 浏览器控件,我们可以将其嵌入到仅支持旧版 ActiveX 控件(WonderWare InTouch HMI)的应用程序中,以尝试获得一些对某些 reeaaallly 的 HTML5 支持旧机器。
到目前为止,我已经使用Microsoft InteropForms Toolkit创建了一个 Interop 用户控件,并以非常简单的方式将 CefSharp.WinForms WebView 嵌入到控件中,即
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
当我构建 DLL 时,我通过命令注册它
regasm /tlb /codebase Cefsharp.WebControl.dll
这似乎在大多数情况下都有效,但我遇到了一些我不完全理解的问题。我正在使用 Excel 中的 VBA 表单对其进行测试(纯粹是为了方便),当我使用表单生成器时,它实际上会在将控件添加到用户表单并完美加载网页时对其进行初始化:
但是,当我尝试显示 UseForm 时,它似乎破坏了 webview 的句柄或实例(或两者),我不知道如何修复它。一旦我尝试显示表格并尝试类似
Sub Test()
WebForm.Show
WebForm.WebControl.Navigate "www.google.com"
End Sub
我收到该对象不存在的错误。我有点搞砸了,有时我会遇到不同的错误,比如指针无效,但到目前为止我还没有弄清楚如何正确设置它。我认为这是处理用户表单事件的问题,但我不确定。
如果有人对此有任何见解,我将不胜感激。谢谢!