如何在C#中获取已启动应用程序的PID

How to get PID of started App in C#

我有几对相同的应用程序。

看起来像

Pair 1: App A + App B

Pair 2: App A + App B

and etc

每个应用程序 A 从其文件夹启动应用程序 B。 (它们都在同一个文件夹中。)

所以我就这样开始了

App A的代码

Process p = new Process();
p.StartInfo.FileName = FileManager.AppDirectoryName + "\" + AppB;
p.Start();

我也是这样把App B关掉的

foreach (Process p in Process.GetProcesses())
{  
    if (p.ProcessName == AppB)
    {
        p.Kill();
        return;
    }
} 

问题在于可能同时执行多个应用程序 B,因此此方法不允许检测要杀死的目标应用程序 B。

我假设使用 App B 的 PID 来杀死它。 但是我现在不知道如何获取PID来启动App B...

有线索吗?

应用启动后,Process对象上的Id属性会表示新启动进程的PID

var PID = p.Id;

保存对 Process 对象的引用:

Process p = new Process();
p.StartInfo.FileName = @"c:\windows\notepad.exe";
p.Start();

// ...

p.Kill();

或者记住它的 PID:

Process p = new Process();
p.StartInfo.FileName = @"c:\windows\notepad.exe";
p.Start();

long pid = p.Id;

// ...

Process.GetProcessById(pid).Kill();