wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Windows服务中从C#中杀死EXCEL.exe进程大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个 Windows服务,通过Microsoft.office.Interop.Excel.Application对象打开一个Excel电子表格. Application xlApp = new Application(); Workbook workbook = xlApp.Workbooks.Open(filename, 2, falsE); ... ... workbook.Close(
我有一个 Windows服务,通过Microsoft.office.Interop.Excel.Application对象打开一个Excel电子表格.
Application xlApp = new Application();
Workbook workbook = xlApp.Workbooks.Open(filename,2,falsE);
...
...
workbook.Close();
xlApp.Quit();

在完成工作簿之后,我想杀死EXCEl.exe进程.

我试过以下,没有成功…

// This returns a processId of 0
IntPtr processId;
GetWindowThreadProcessId(new IntPtr(xlApp.Hwnd),out processId);
Process p = Process.GetProcessById(processId.ToInt32());   
p.Kill();

任何人有什么想法,通过Windows服务如何做到这一点?

正确关闭打开的Excel工作簿并退出应用程序是非常困难的.如果我可以找到我将发布的链接,但实质上您必须清理所有对您创建的任何COM对象的引用.这包括来自ODBCConnections(数据连接),Worksheets,Workbooks和Excel应用程序的所有内容.我的工作涉及垃圾收集和System.Runtime.Interopservices.Marshal对象的组合:
// Garbage collecTing
GC.Collect();
GC.WaitForPendingFinalizers();
// Clean up references to all COM objects
// As per above,you're just using a Workbook and Excel Application instance,so release them:
workbook.Close(false,Missing.Value,Missing.value);
xlApp.Quit();
Marshal.FinalReleaseComObject(workbook);
Marshal.FinalReleaseComObject(xlApp);

像你所说的,循环和杀死每个Excel进程通常不是一个好主意,因为如果你作为一个Windows应用程序运行它,你可以关闭Excel在您的用户,或在一个服务也关闭正在运行的Excel实例通过一些其他程序.

编辑:有关更多信息,请参阅this question.

大佬总结

以上是大佬教程为你收集整理的在Windows服务中从C#中杀死EXCEL.exe进程全部内容,希望文章能够帮你解决在Windows服务中从C#中杀死EXCEL.exe进程所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。