我在程序中有以下内容(用 VB.NET 编写):
Imports Microsoft.Office.Interop.Excel
Public Class Form1
Dim eApp As New Excel.Application
Dim w As Excel.Workbook
w = eApp.Workbooks.Open( "path.xls", ReadOnly:=True)
.. Processing Code ..
//Attempts at killing the excel application
w.Close()
eApp.Workbooks.Close()
eApp.Quit()
End Class
当我运行几次时,我在任务管理器中得到了一堆 EXCEL.EXE 实例。如何在代码中杀死这些进程?代码中的所有方法都已尝试过,但都不起作用。
最佳答案
我不得不在 NET 1.1 中这样做一段时间,所以请原谅生锈。
在 eApp 上,有一个 Hwind(一个 win32 窗口句柄 - http://msdn.microsoft.com/en-us/library/bb255823.aspx)或类似的对象。我不得不使用它和一个 pInvoke ( http://www.pinvoke.net/default.aspx/user32.GetWindowThreadProcessId ) 来获取进程 ID。这样我就可以在 exe 上执行 Process.Kill() 了。
现在可能有更好的方法来做到这一点,但这应该可行。