C#:如何查找进程是否被当前的应用程序调用?

有什么方法可以确定当前应用程序是否调用了进程? 我正在打开和Excel互操作过程,处理文件等,之后,我只想closures我调用的这个Excel进程。

像这样的东西:

Process[] pProcess = System.Diagnostics.Process.GetProcessesByName("Excel"); foreach (var process in pProcess) { if (process.Parent == "MyApp.exe") process.Kill(); } 

用法:

 Console.WriteLine("ParentPid: " + Process.GetProcessById(6972).Parent().Id); 

码:

 public static class ProcessExtensions { private static string FindIndexedProcessName(int pid) { var processName = Process.GetProcessById(pid).ProcessName; var processesByName = Process.GetProcessesByName(processName); string processIndexdName = null; for (var index = 0; index < processesByName.Length; index++) { processIndexdName = index == 0 ? processName : processName + "#" + index; var processId = new PerformanceCounter("Process", "ID Process", processIndexdName); if ((int) processId.NextValue() == pid) { return processIndexdName; } } return processIndexdName; } private static Process FindPidFromIndexedProcessName(string indexedProcessName) { var parentId = new PerformanceCounter("Process", "Creating Process ID", indexedProcessName); return Process.GetProcessById((int) parentId.NextValue()); } public static Process Parent(this Process process) { return FindPidFromIndexedProcessName(FindIndexedProcessName(process.Id)); } } 

来源: https : //stackoverflow.com/a/2336322/706867

你可以持有对Excel-Interop-Process的参考,如果你已经做了你想做的事情,就杀了它。

看看这个例子:

 static void Main(string[] args) { var excelApp = new Microsoft.Office.Interop.Excel.Application(); var workbook = excelApp.Workbooks.Open(Filename: @"someexcelworkbook.xls"); workbook.Activate(); excelApp.Visible = true; excelApp.Quit(); } 

希望这是有益的; 😉