我在程序中有以下内容(用 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() 了。

现在可能有更好的方法来做到这一点,但这应该可行。

10-06 16:06