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/