Gesucht wurde nach einer Lösung für dieses Problem für Tage ohne Glück so dass ich beschlossen, hier zu posten und hoffe, dass jemand mir helfen kann. Was es noch schwieriger macht ist, dass ich dieses Problem nicht sehr konsequent auf meinem Computer reproduzieren kann. Manchmal werde ich den Fehler bekommen, aber die meiste Zeit werde ich nicht.vb.net - Problem Remaking com Objekt nach dem Programm hat
Grundsätzlich, was passiert ist, ich bin ein IE-Objekt erstellen, die mein Programm dann für eine lange Zeit kontrolliert. Wenn ein Benutzer das Programm beendet, ruft er oIE.Quit() auf und schließt das Programm. Dies sollte den Internet Explorer und alle damit verbundenen Prozesse schließen.
Aber der iexplorer Prozess endet nicht zu schließen. Wenn der Benutzer dann versucht, das Programm erneut auszuführen, erhalten wir diesen Fehler "System.Runtime.InteropServices.COMException (0x80004005): Erstellen einer Instanz der COM-Komponente mit CLSID {0002DF01-0000-0000-C000-000000000046} aus der IClassFactory fehlgeschlagen aufgrund des folgenden Fehlers: 80004005. ".
Um dies zu beheben, schließen wir einfach die offenen iexplorer.exe-Prozesse, die geöffnet sind, und es lässt uns unser ie-Objekt erneut erstellen. Dies geschieht auch, wenn das Programm abstürzt und sie versuchen, es neu zu starten.
Ich bin nicht sicher, was das verursacht oder wenn ich etwas vermisse, das mit com-Objekten zu tun hat. Aber ich stecke einfach fest.
Hier ist ein Code, obwohl wahrscheinlich Fehler reproduzieren nicht in diesem Code Aufstecken:
'create ie object
oIE = New SHDocVw.InternetExplorer
oIE.Navigate("http://www.google.com")
oIE.Visible = False
oIE.Silent = True
'kill ie object
oIE.Quit()
Danke für den Rat. Die meiste Zeit wird die Anwendung nicht abstürzen, so dass wir keine Ghost-Prozesse haben werden, aber wenn dies der Fall ist, haben wir normalerweise nur 1. Es gibt auch eine Funktion am Anfang des Codes, die die versteckten ie Objekte findet und versucht Führe oIE.Quit() auf ihnen aus. Dies schlägt erneut fehl. Ich habe in den Wechsel des Webbrowsers geschaut und werde wahrscheinlich den Schalter machen. Das einzige Problem ist, dass es schwieriger ist, JavaScript auszuführen, und ich bin besorgt, dass meine Benutzer mehr Fehler bekommen werden, wenn ich umschalte. – Phil
Javascript läuft genauso gut in einem WebBrowser. –
Ich werde das untersuchen. – Phil