運がない日にこの問題の解決策を探していたので、ここに投稿して誰かが私を助けてくれることを願っています。それをさらに困難にするのは、私のコンピュータ上でこの問題を非常に一貫して再現することができないということです。時々私はエラーを得るだろうが、ほとんどの時間私はしません。vb.net - プログラムを終了した後のCOMオブジェクトの再作成の問題
基本的に何が起きているのですか?自分のプログラムが長期間コントロールしているIEオブジェクトを作成しています。何が起こっているのか、ユーザーがプログラムを終了すると、oIE.Quit()を呼び出してプログラムを閉じます。これは、インターネットエクスプローラとそれに関連するすべてのプロセスを終了するはずです。
しかし、iexplorerプロセスは終了しません。 IClassFactoryからCLSID {0002DF01-0000-0000-C000-000000000046}のCOMコンポーネントのインスタンスを作成できませんでした。このエラーは、ユーザーがプログラムを再度実行しようとすると発生します。 "System.Runtime.InteropServices.COMException(0x80004005)次のエラー:80004005が原因です。 "
これを修正するには、開いているiexplorer.exeプロセスを閉じるだけで、ieオブジェクトを再度作成することができます。これは、プログラムがクラッシュして再起動しようとした場合にも発生します。
私はこれを引き起こしているかどうか、または私がcomオブジェクトと関係があるものを紛失しているかどうかはわかりません。しかし、私は単に立ち往生しています。おそらく、このコードをプラグインすると、すべてのエラーを再現できないだろうが、ここで
はいくつかのコードです:あなたが得る
'create ie object
oIE = New SHDocVw.InternetExplorer
oIE.Navigate("http://www.google.com")
oIE.Visible = False
oIE.Silent = True
'kill ie object
oIE.Quit()
アドバイスをいただきありがとうございます。ほとんどの場合、アプリケーションはクラッシュしないので、ゴーストプロセスはありませんが、通常は1しかありません。コードの最初に隠れたオブジェクトを見つけ出してそれらに対してoIE.Quit()を実行します。これは再び失敗します。私はウェブブラウザの切り替えを検討しており、切り替えを行う可能性が高いです。唯一の問題はjavascriptを実行するのが難しく、私が切り替えるとユーザーのエラーが増えると心配です。 – Phil
Javascriptはウェブブラウザーでも同様に動作します。 –
私はこれを調べます。 – Phil