关于C#中调用Excel程序后强制关闭其进程的说明

在C#中使用Microsoft.Office.Interop.Excel.dll操作Excel文件时,有时创建的Application无法正常退出,因此我们就需要通过结束其进程的方式强制将Excel的Application退出:

一、引入Windows API获取进程Id函数:

[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int id);

二、强制结束Excel的Application进程:

// 创建Excel进程
Microsoft.Office.Interop.Excel.Application app = new Application();
try
{
    // 正常退出Excel进程
    app.Quit();
}
catch
{
    // 如Excel进程退出失败,则强制结束其进程
    // 获取当前Excel进程的句柄
    IntPtr intPtr = new IntPtr(app.Hwnd);
    // 获取当前Excel进程的进程Id
    int processId = 0;
    GetWindowThreadProcessId(intPtr, out processId);
    // 获取当前Excel进程
    Process process = Process.GetProcessById(processId);
    if (process != null)
    {
        // 强制结束Excel进程
        process.Kill();
    }
}

发表回复