|
分類:[C#]
題記の件は「も〜うんざり」って思われる方は多いと思われますが、
私も非常に恐縮しております。
何卒宜しくお願い致します。
【環境:XP_SP3, Excel2003, Visual C# 2010】
大まかな流れ
1.プログラムより対象のエクセルファイルを立ち上げる。
2.立ち上げたエクセルファイルの終了処理をせずにプログラムを終了する。
(何らかのエラーでプログラムがフリーズし終了した時を想定)
3.再びプログラムを起動
4.プログラム内の「エクセル二重起動チェック」メソッドにて二重起動しようとしている事を検出
5.下の強制終了ソースにてエクセルを終了
6.プログラム終了
と、考えてます。
現在の所、5項により下の強制終了ソースを実行すれば、
1.ブックの終了、アプリケーションの終了は出来ています。
2.しかしタスクマネージャーのプロセスに「EXCEL.EXE」が残ってしまいます。
(プログラムを終了しても残ります)
その他、
C:\ExcelFile.xlsを手動で開いておいて、プログラムを起動し強制終了メソッドを
実行した場合、正常にブック、アプリの終了およびプロセスからも「EXCEL.EXE」は消えます。
どうぞ、ご教示お願い致します。
//XXXXXXXXXXXXXXXXXXX 強制終了Source XXXXXXXXXXXXXXXXXXX
//開いてるファイルをctrlBookにセットする
Excel.Workbook ctrBook = (Excel.Workbook)Microsoft.VisualBasic.Interaction.GetObject(@"C:\ExcelFile.xls", null);
//開いてるファイルのAppをctrAppにセットする
Excel.Application ctrApp = ctrBook.Application;
//ブックを閉じる
ctrBook.Close();
//App終了
ctrApp.Quit();
//COMオブジェクトの開放
Marshal.ReleaseComObject(ctrBook);
ctrBook = null;
Marshal.ReleaseComObject(ctrApp);
ctrApp = null;
//終了
Application.Exit();
//XXXXXXXXXXXXXXXXXXX 強制終了Source XXXXXXXXXXXXXXXXXXX
|