CEFSharp (Chromium Embedded Framework) no controle de usuário de interoperabilidade
Eu estou tentando usar as ligações CefSharp CLR para o Chromium Embedded Framework para criar um controle de navegador da Web alternativo que podemos incorporar em um aplicativo que suporta apenas controles ActiveX herdados (WonderWare InTouch HMI) em uma tentativa de obter algum suporte HTML5 para alguns máquinas antigas.
Até agora, criei um Controle de Usuário Interop usando oKit de ferramentas Microsoft InteropForms e incorporou um CefSharp.WinForms WebView no controle de uma maneira bastante básica, ou seja,
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
Quando eu construo a DLL, eu a registro através do comando
regasm / tlb / codebase Cefsharp.WebControl.dll
Isso parece funcionar na maior parte, mas estou tendo alguns problemas que não entendo completamente. Eu estou testando com o VBA Forms no Excel (puramente por conveniência) e quando estou usando o Form Builder, ele inicializa o controle quando é adicionado ao formulário do usuário e carrega a página perfeitamente:
No entanto, quando tento mostrar o UseForm, ele parece destruir o identificador ou a instância da visualização da Web (ou ambos) e não consigo descobrir como corrigi-lo. Quando eu tento mostrar o formulário e tentar algo como
Sub Test()
WebForm.Show
WebForm.WebControl.Navigate "www.google.com"
End Sub
Eu recebo um erro que o objeto não existe. Eu mexi um pouco e às vezes eu recebo erros diferentes, como o ponteiro é inválido, mas até agora eu não descobri como configurá-lo corretamente. Eu acho que é um problema ao manipular os eventos de formulário do usuário, mas não tenho certeza.
Se alguém tiver alguma ideia sobre isso, agradeceria muito. Obrigado!