我從C#.Net應用程序運行Excel,無法關閉進程。我怎樣才能讓Excel過程從我的C#程序正確關閉?如何停止從C#.Net應用程序啓動的Excel進程?
1
A
回答
4
試試這個:
foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName("EXCEL"))
{
if (process.MainModule.ModuleName.ToUpper().Equals("EXCEL.EXE"))
{
process.Kill();
break;
}
}
4
我敢肯定,約99%,你的問題是由懸空COM引用防止Excel進程的關閉造成的。 Excel尤其容易出現這種情況,因爲它傾向於透明地生成COM引用,而不會讓您獲取手柄並明確關閉它們。
PIA通過自己設置對底層COM對象的引用來解決這個問題,除非明確地讓它們執行,否則它們不會清理。正是出於這個原因,通過PIA工作Excel非常繁瑣。
Application.Quit()
(IIRC這是它叫什麼)將關閉過程中如果引用都正確清理。這意味着你必須仔細管理任何持有COM引用的Excel進程的生命週期,並確保所有COM引用都被正確清理。
0
1
Application app = new Application();
...
EndTask((IntPtr)app.Hwnd, true, true);
[DllImport("user32.dll")]
public static extern bool EndTask(IntPtr hwnd, bool shutdown, bool force);
相關問題
- 1. 從C++啓動C#.Net應用程序
- 2. Gracefuly停止.net啓動Java進程
- 3. 停止的應用程序啓動
- 4. 如何從Maven exec插件啓動/停止Rails應用程序?
- 5. 如何從C#應用程序啓動應用程序?
- 6. 自動阻止應用程序從啓動程序啓動
- 7. 從Web應用程序啓動進程
- 8. 啓動應用程序時啓動屏幕時應用程序已停止
- 9. Linux守護進程停止啓動 - 停止守護進程
- 10. 在應用程序啓動時停止已啓動的服務
- 11. 從CD啓動.NET應用程序?
- 12. 如何啓動/停止使用C#的遠程機器上的進程?
- 13. 如何停止使用c#啓動程序?
- 14. 如何從.net啓動外部程序(進程)作爲不同的用戶.net
- 15. android - 如何停止啓動應用程序
- 16. 如何停止在BREW MP中啓動應用程序
- 17. 如何在應用程序啓動時停止後臺任務?
- 18. 如何防止從我的應用程序啓動其他應用程序
- 19. 從Xcode啓動後臺提取時,應用程序未停止
- 20. 如何停止C#應用程序的當前進程並啓動另一個功能
- 21. C#停止進程
- 22. 如何從PHP文件啓動/停止Linux上的應用程序?
- 23. 如何啓動C++ mfc應用程序
- 24. 如何在Python中使用子進程模塊啓動和停止Linux程序?
- 25. 啓動 - 停止守護進程和Python
- 26. 啓動後立即停止進程
- 27. 停止postgres進程重新啓動 - mac
- 28. 從C#啓動ClickOnce應用程序#
- 29. 如何從其他應用程序啓動ClickOnce應用程序?
- 30. 如何從Java Web應用程序啓動Android應用程序?
這是相當unhygenic,並可能打破東西如果Excel實例仍有打開的文件。它還會殺死機器上的所有Excel實例 - 包括未由您的程序啓動的那些實例(即用戶已打開的實例)。根據運行這些任務的用戶的特權,它可能會終止屬於其他用戶的Excel進程 - 想象一下,在終端服務或Citrix服務器上運行它。 – ConcernedOfTunbridgeWells 2010-02-26 10:15:55
@ConcernedOfTunbridgeWells - 是的,它會關閉甚至打開excel文件沒有任何問題。只是回答Lalit Dhake的問題:) – 2010-02-26 10:19:39