Csharp/C#教程:杀死进程Excel C#分享


杀死进程Excel C#

我必须2处理excel。 例如:

1)example1.xlsx 2)example2.xlsx

如何杀死第一个“example1.xlsx”?

我用这个代码:

foreach (Process clsProcess in Process.GetProcesses()) if (clsProcess.ProcessName.Equals("EXCEL")) //Process Excel? clsProcess.Kill(); 

那杀了两个。 我想杀一个……谢谢。

ProcessMainWindow标题将为您完成,它将“Microsoft Excel – ”附加到文件的名称:

基本上(快速代码):

 private void KillSpecificExcelFileProcess(string excelFileName) { var processes = from p in Process.GetProcessesByName("EXCEL") select p; foreach (var process in processes) { if (process.MainWindowTitle == "Microsoft Excel - " + excelFileName) process.Kill(); } } 

使用:

 KillSpecificExcelFileProcess("example1.xlsx"); 

编辑 :测试并validation工作。

如果您当前的代码正在运行,则此修订应该使用名称“EXCEL”终止它找到的第一个进程。

 foreach (Process clsProcess in Process.GetProcesses()) { if (clsProcess.ProcessName.Equals("EXCEL")) { clsProcess.Kill(); break; } } 

如果你想杀死一个特定的进程,你将不得不提供更多的信息。

Excel将永远是一个单一的过程,AFAIK。 相同的进程/窗口在其中打开多个文档。 您要做的是使用Excel自动化来关闭您想要的文档。 也许这会让你开始。 https://support.microsoft.com/kb/302084

希望这可以帮助。

复制并粘贴此内容。 完成!

  System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("Excel"); foreach (System.Diagnostics.Process p in process) { if (!string.IsNullOrEmpty(p.ProcessName)) { try { p.Kill(); } catch { } } } 

kd7的post是一个很棒的答案,效果很好,只需添加两件事,

MainWindowTitle格式为 – "Filename.xlsx - Excel"

如果您的excel文档不可见,那么您的MainWindowTitle将使用""MainWindowTitle将“杀死所有僵尸excel进程”。

您需要检查由进程打开的文件句柄,然后将其终止。
如何检查哪个文件处理进程持有: 如何通过C#中的进程获取打开文件句柄列表?

 foreach (Process clsProcess in Process.GetProcesses()) { if (clsProcess.ProcessName.Equals("EXCEL") && HasFileHandle(fileName, clsProcess)) { clsProcess.Kill(); break; } } 

尝试获取主窗口标题

  foreach (Process clsProcess in Process.GetProcesses()) { if (clsProcess.ProcessName.Equals("EXCEL")&& clsProcess.MainWindowTitle =="example") { clsProcess.CloseMainWindow(); break; } } 

刚刚在Google上进行了快速搜索,尝试使用Process.MainWindowTitle()来获取Excel进程的标题,并决定要杀死哪一个。

我不确定这种方法,但希望这会有所帮助:

https://msdn.microsoft.com/en-us/library/system.diagnostics.process.mainwindowtitle.aspx

使用以下逻辑来防止任务管理器中的Zombie Excel进程

上述就是C#学习教程:杀死进程Excel C#分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  List GetAllExcelProcessID() { List ProcessID = new List(); if (currentExcelProcessID == -1) { List currentExcelProcessList = System.Diagnostics.Process.GetProcessesByName("EXCEL").ToList(); foreach(var item in currentExcelProcessList) { ProcessID.Add(item.Id); } } return ProcessID; } int GetApplicationExcelProcessID(List ProcessID1, List ProcessID2) { foreach(var processid in ProcessID2) { if (!ProcessID1.Contains(processid)) { currentExcelProcessID = processid; } } return currentExcelProcessID; } void KillExcel() { System.Diagnostics.Process process = System.Diagnostics.Process.GetProcessById(currentExcelProcessID); process.Kill(); } List ProcessID1 = GetAllExcelProcessID(); excel = new Excel.Application(); List ProcessID2 = GetAllExcelProcessID(); currentExcelProcessID = GetApplicationExcelProcessID(ProcessID1, ProcessID2); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1034472.html

(0)
上一篇 2022年1月19日
下一篇 2022年1月19日

精彩推荐