CEFSharp (Chromium Embedded Framework) w Interop User Control
Próbuję użyć powiązań CefSharp CLR dla Chromium Embedded Framework, aby utworzyć alternatywną kontrolę przeglądarki internetowej, którą możemy osadzić w aplikacji, która obsługuje tylko starsze formanty ActiveX (WonderWare InTouch HMI), próbując uzyskać pewne wsparcie HTML5 dla niektórych reeaaallly stare maszyny.
Do tej pory stworzyłem Interop User Control za pomocąZestaw narzędzi Microsoft InteropForms i osadził WebView CefSharp.WinForms na kontrolce w całkiem nagi sposób, tj.
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
Kiedy tworzę bibliotekę DLL, rejestruję ją za pomocą polecenia
regasm / tlb / codebase Cefsharp.WebControl.dll
Wydaje się, że to działa w większości, ale mam pewne problemy, których nie rozumiem w pełni. Testuję go z formularzami VBA w Excelu (wyłącznie z wygody) i kiedy używam Kreatora formularzy, faktycznie inicjuje formant, gdy jest dodawany do formularza użytkownika i ładuje stronę doskonale:
Jednak gdy próbuję pokazać formularz UseForm, wydaje się, że albo niszczy on uchwyt, albo instancję widoku internetowego (lub obu) i nie mogę się dowiedzieć, jak to naprawić. Raz próbuję pokazać formularz i spróbować czegoś takiego
Sub Test()
WebForm.Show
WebForm.WebControl.Navigate "www.google.com"
End Sub
Dostaję błąd, że obiekt nie istnieje. Zrobiłem trochę zamieszania i czasami dostaję różne błędy, takie jak wskaźnik jest nieprawidłowy, ale jak dotąd nie wiem, jak go poprawnie skonfigurować. Myślę, że jest to problem z obsługą zdarzeń formularza użytkownika, ale nie jestem pewien.
Gdyby ktoś miał na to jakiś wgląd, byłbym bardzo wdzięczny. Dzięki!