在关闭试图杀死Excel进程的应用程序时,我发现了一个基于强制转换的异常,这些进程最初是在用户点击输出代码的.csv文件时启动的。
例外细节是:
{"无法投射类型' System.Diagnostics.Process'键入' System .__ ComObject'。"}
代码如下:
Private Function CloseAllResidentExcels() As Boolean
CloseAllResidentExcels = False
Try
'loop this process until there are no valid id's to return
Dim Prc As Process
Dim localByName As Process() = Process.GetProcessesByName("EXCEL")
Prc = Process.GetProcessById(localByName(0).Id)
Marshal.ReleaseComObject(Prc) '>>>>>>>>>Exception thrown here<<<<<<<<<<
Prc.Kill()
Catch ex As Exception
CloseAllResidentExcels = True
End Try
End Function
然而,有一个问题是,我认为代码(上面列出的代码)会杀死所有Excel进程,而不管独立于此应用程序启动的Excel进程。换句话说,如果用户使用Excel,启动此应用程序,则此应用程序可以在关闭期间终止其原始Excel进程(?)。有没有办法捕获这个应用程序启动的Excel进程,而不是用户独立于此应用程序使用自己使用的Excel?