KillProcessExcelC#我要2个处理excel。例如:1)example1.xlsx2)example2.xlsx如何杀死第一个“example1.xlsx”?我使用这段代码:foreach(ProcessclsProcessinProcess.GetProcesses())if(clsProcess.ProcessName.Equals("EXCEL"))//ProcessExcel?clsProcess.Kill();那杀了两个。我想杀一个...谢谢。ProcessMainWindow标题将为您完成,它将“MicrosoftExcel-”附加到文件名:基本上(快速代码):privatevoidKillSpecificExcelFileProcess(stringexcelFileName){varprocesses=frompinProcess.GetProcessesByName(“EXCEL”)选择p;foreach(varprocessinprocesses){if(process.MainWindowTitle=="MicrosoftExcel-"+excelFileName)process.Kill();使用:KillSpecificExcelFileProcess("example1.xlsx");编辑:测试和验证工作。如果您当前的代码正在运行,此修复程序应该终止它找到的第一个名为“EXCEL”的进程。foreach(ProcessclsProcessinProcess.GetProcesses()){if(clsProcess.ProcessName.Equals("EXCEL")){clsProcess.Kill();休息;如果你想杀死一个特定的进程,你将不得不提供更多信息。Excel将始终是一个进程,AFAIK。同一个进程/窗口中打开了多个文档。您所做的是使用Excel自动化来关闭您想要的文档。也许这会让你开始。http://support.microsoft.com/kb/302084希望这有帮助。复制并粘贴此内容。结束!System.Diagnostics.Process[]process=System.Diagnostics.Process.GetProcessesByName("Excel");foreach(System.Diagnostics.Processpinprocess){if(!string.IsNullOrEmpty(p.ProcessName)){try{p.Kill();}catch{}}}kd7的帖子是一个很好的答案,效果很好,只需添加两件事,MainWindowTitle格式为-“Filename.xlsx-Excel”如果您的excel文档不可见,那么您的MainWindowTitle将使用“”到MainWindowTitle将“杀死所有僵尸excel进程”。您需要检查进程打开的文件句柄,然后终止它们。Howtocheckwhichfilehandleprocessisholding:HowtogetlistofopenfilehandlesbyprocessinC#?foreach(ProcessclsProcessinProcess.GetProcesses()){if(clsProcess.ProcessName.Equals("EXCEL")&&HasFileHandle(fileName,clsProcess)){clsProcess.Kill();休息;}}尝试获取主窗口标题foreach(ProcessclsProcessinProcess.GetProcesses()){if(clsProcess.ProcessName.Equals("EXCEL")&&clsProcess.MainWindowTitle=="example"){clsProcess.CloseMainWindow();休息;刚刚做了一个快速的谷歌搜索,尝试Process.MainWindowTitle()来获取Excel进程的标题并决定杀死哪个进程。我不确定这种方法,但希望这会有所帮助:http://msdn.microsoft.com/en-us/library/system.diagnostics.process.mainwindowtitle.aspx使用以下逻辑来防止ZombieExcel进程以上就是C#学习教程:杀死进程ExcelC#分享的全部内容,如果对你有用还需要了解更多C#学习教程,希望大家多多关注—ListGetAllExcelProcessID(){ListProcessID=新列表();如果(currentExcelProcessID==-1){列表currentExcelProcessList=System.Diagnostics.Process.GetProcessesByName("EXCEL").ToList();foreach(currentExcelProcessList中的var项目){ProcessID.Add(item.Id);}}返回进程ID;}intGetApplicationExcelProcessID(ListProcessID1,ListProcessID2){foreach(varprocessidinProcessID2){if(!ProcessID1.Contains(processid)){currentExcelProcessID=processid;}}返回currentExcelProcessID;}voidKillExcel(){System.Diagnostics.Processprocess=System.Diagnostics.Process.GetProcessById(currentExcelProcessID);处理.Kill();}列表ProcessID1=GetAllExcelProcessID();excel=newExcel.Application();列出ProcessID2=GetAllExcel进程ID();currentExcelProcessID=GetApplicationExcelProcessID(ProcessID1,ProcessID2);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。
