Я пытаюсь использовать привязки CLR CefSharp для Chromium Embedded Framework для создания альтернативного элемента управления веб-браузером, который мы можем внедрить в приложение, которое поддерживает только старые элементы управления ActiveX (WonderWare InTouch HMI), пытаясь получить некоторую поддержку HTML5 для некоторых старых машин.CEFSharp (Chromium Embedded Framework) в Interop User Control
До сих пор я создал Interop пользовательский элемент управления с помощью Microsoft InteropForms Toolkit и встроили 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/кодовая Cefsharp.WebControl.dll
Это похоже на работу для го Большая часть, но у меня есть некоторые проблемы, которые я не совсем понимаю. Я проверяю его с формами VBA в Excel (чисто из соображений удобства), и когда я использую форму Builder, он фактически инициализирует контроль, когда он добавляется к пользовательской форме и загружает веб-страницу отлично:
Однако, когда я пытаюсь показать UseForm, он либо уничтожает дескриптор, либо экземпляр webview (или обоих), и я не могу понять, как его исправить. Как только я попытаюсь показать форму и попробую что-то вроде
Sub Test()
WebForm.Show
WebForm.WebControl.Navigate "www.google.com"
End Sub
Я получаю сообщение об ошибке, что объект не существует. Я немного испортил, и иногда я получаю разные ошибки, например, указатель недействителен, но до сих пор я не понял, как правильно настроить его. Я думаю, что это проблема с обработкой событий User Form, но я не уверен.
Если у кого-то есть понимание, я бы очень признателен. Благодаря!