Excel在任务管理器中产生了很多僵尸进程,以下内容旨在杀死它们。

我有这个辅助方法:

//helper method to kill zombie excel processes
private void KillSpecificExcelFileProcess(string excelFileName)
{
  var processes = from p in Process.GetProcessesByName("EXCEL")
                  select p;

  foreach(var process in processes)
  {
    Console.WriteLine("{2} MainWindowTitle {0} {1}",process.MainWindowTitle,(process.MainWindowTitle == "Microsoft Excel - " + excelFileName).ToString(),excelFileName);

    if(process.MainWindowTitle == "Microsoft Excel - " + excelFileName)
      process.Kill();
  }
}


这被写入控制台:



因此,该方法可以找到Excel进程,但process.MainWindowTitle是一个空字符串-为什么?

编辑
像这样在控制台中打开Excel:

using Excel = Microsoft.Office.Interop.Excel;


然后在课堂上:

this.xlApp = new Excel.Application();
this.xlApp.Visible = true;

最佳答案

此Excel进程可能是通过代码启动的,因此它们没有GUI,因此没有窗口标题。

Microsoft Docs


  仅当流程具有图形界面时,流程才具有与之关联的主窗口。如果关联的进程没有主窗口(因此MainWindowHandle为零),则MainWindowTitle为空字符串(“”)。

关于c# - 为什么process.MainWindowTitle返回空字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29007831/

10-13 06:58