在Windows服务中从C#中杀死EXCEL.exe进程
发布时间:2020-12-14 04:34:35 所属栏目:Windows 来源:网络整理
导读:我有一个 Windows服务,通过Microsoft.Office.Interop.Excel.Application对象打开一个Excel电子表格. Application xlApp = new Application();Workbook workbook = xlApp.Workbooks.Open(fileName,2,false);......workbook.Close();xlApp.Quit(); 在完成工作
我有一个
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 – 使用MinGW编译凭据提供程序
- windows-7 – 使用libvirt管理的kvm 64主机上win
- winapi – Windows SDK 7.0的signtool中的signwi
- 在.NET中,最小化程序时,垃圾回收器是否被调用是真
- windows – 如何禁用ColdFusion 10 ORM日志记录
- Windows后登陆没有图形界面只有cmd,explorer.ex
- Windows Azure AppFabric服务是否已停止使用?
- windows-server-2008 – 如何在不使用chkdsk脱机
- 适用于Windows的Snmp Server
- windows-server-2008 – 除了星期日之外,你能创建
热点阅读