如何杀死我的进程?没有杀死进程,属于另一个用户

时间:2013-01-04 03:18:03

标签: c# com process

我有一个不关闭的Excel应用程序。 这是我的代码

    xlApp = new Excel.Application();
    Workbooks = xlApp.Workbooks;
    xlWorkBook = Workbooks.Open(FileUpload1.PostedFile.FileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
--------------------------------------------------------
    xlWorkBook.Close(false);
    xlApp.Quit();

现在尝试杀死这样的Excel进程:

Process[] exProc = Process.GetProcessesByName("EXCEL");
foreach (Process proc in exProc)
{
   proc.Kill();
}

但我不知道如何杀死我开始的过程。

2 个答案:

答案 0 :(得分:1)

我认为您需要释放Excel COM对象才能正常关闭

Marshal.FinalReleaseComObject(xlWorkSheet);
xlWorkBook.Close(false);
Marshal.FinalReleaseComObject(xlWorkBook);
xlApp.Quit();
Marshal.FinalReleaseComObject(xlApp)

答案 1 :(得分:1)

当你创建一个进程时,尝试将它的句柄保存在一个变量中,比如使用CreateProcess API,它会将HANDLE返回给你创建的进程,使用该HANDLE,你总是可以使用GetProcessID API获取进程ID。