我从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. 停止启动应用程序
- 6. 应用程序无法启动。应用程序意外停止
- 7. 如何从C#应用程序启动应用程序?
- 8. 自动阻止应用程序从启动程序启动
- 9. 从Web应用程序启动进程
- 10. 启动应用程序时启动屏幕时应用程序已停止
- 11. C#程序启动和停止服务
- 12. 如何从Java远程启动/停止IIS 6.0中的应用程序池
- 13. Linux守护进程停止启动 - 停止守护进程
- 14. 如何获取应用程序的启动和停止时间?
- 15. 如何启动/停止ActiveSync的应用程序怀抱设备
- 16. 如何根据我的应用程序启动和停止GPS?
- 17. 从CD启动.NET应用程序?
- 18. 在应用程序启动时停止已启动的服务
- 19. 如何使用主管启动/停止uWSGI应用程序?
- 20. 如何启动/停止使用C#的远程机器上的进程?
- 21. 如何防止Android从启动程序重新启动应用程序
- 22. 如何从.net启动外部程序(进程)作为不同的用户.net
- 23. 如何停止使用c#启动程序?
- 24. 如果设备启动,我的应用后台进程停止
- 25. 如何从ROOT权限的Android应用程序启动进程
- 26. 如何停止在BREW MP中启动应用程序
- 27. android - 如何停止启动应用程序
- 28. 如何在应用程序启动时停止后台任务?
- 29. 如何在apache ignite未启动时停止应用程序?
- 30. 如何防止从我的应用程序启动其他应用程序
这是相当unhygenic,并可能打破东西如果Excel实例仍有打开的文件。它还会杀死机器上的所有Excel实例 - 包括未由您的程序启动的那些实例(即用户已打开的实例)。根据运行这些任务的用户的特权,它可能会终止属于其他用户的Excel进程 - 想象一下,在终端服务或Citrix服务器上运行它。 – ConcernedOfTunbridgeWells 2010-02-26 10:15:55
@ConcernedOfTunbridgeWells - 是的,它会关闭甚至打开excel文件没有任何问题。只是回答Lalit Dhake的问题:) – 2010-02-26 10:19:39