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