我錯過了Excel.Application.Quit
或Excel.Application.BeforeQuit
事件。 有沒有人知道模擬這些事件的解決方法?防止Excel退出
我從通過COM互操作一個C#WinForms應用程序訪問Excel。給定一個Excel.Application
對象,我怎麼能:
- 最好防止Excel退出?
- 如果這是不可能的,我怎麼能至少通知當Excel退出?
請注意:因爲我有一個COM參考Excel.Application
,Excel進程不退出當Excel「跳槽」用戶。雖然這聽起來矛盾,但事實就是這樣。通過「退出」,我的意思是用戶點擊窗口右上角的「退出」或「十字按鈕」。窗口關閉,文件被卸載,加載項被卸載,以及Excel除了我不知道的東西之外的任何東西。但是我仍然可以使用Application
對象來「恢復」該進程並使Excel再次可見,儘管加載項然後丟失了,並且我還不確定尚未定義狀態的其他內容。
爲了擺脫這個問題,我希望在一開始就取消退出(如果它存在,請考慮一個BeforeQuit
Cancel = true
),或者至少在Excel退出時通知,以便我可以釋放COM對象並使流程真正退出,下一次我再次需要Excel時,我會知道我需要首先啓動它。
不幸的是這是一個惡性循環:只要Excel運行,我需要COM對象。所以我不能在 Excel退出之前處理它們。另一方面,只要COM對象存在,即使Excel假裝退出,進程也不會退出,所以我不能等待進程退出事件或類似事件。
我有我會來砸我的頭撞牆的感覺令人不快...
請使用枕頭,磚塊已知很難:) – Marko 2010-09-16 07:08:44
是否可以選擇監視Process.Exit事件,並在隱藏狀態下重新啓動Excel(如果用戶手動關閉它)? – 2010-09-16 07:12:20
@Marko:你的意思是我根本不應該使用Excel? :-)/:-( – chiccodoro 2010-09-16 07:35:59