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