关闭所有常驻Excel进程时出现异常

时间:2016-12-29 17:55:58

标签: excel vb.net process

在关闭试图杀死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?

0 个答案:

没有答案