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

C# 如何在C中获取已启动应用程序的PID#,c#,.net,process,C#,.net,Process,我有几对相同的应用程序 看起来像 第1对:应用程序A+应用程序B 第2对:应用程序A+应用程序B 等等 每个应用程序A从其文件夹启动应用程序B。(它们都在同一个文件夹中。) 所以我就这样开始 应用程序A的代码 Process p = new Process(); p.StartInfo.FileName = FileManager.AppDirectoryName + "\\" + AppB; p.Start(); 我也会像这样停止应用程序B。 foreach (Proce

我有几对相同的应用程序

看起来像

第1对:应用程序A+应用程序B

第2对:应用程序A+应用程序B

等等

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

所以我就这样开始

应用程序A的代码

Process p = new Process();
p.StartInfo.FileName = FileManager.AppDirectoryName + "\\" + AppB;
p.Start();
我也会像这样停止应用程序B。

foreach (Process p in Process.GetProcesses())
{  
    if (p.ProcessName == AppB)
    {
        p.Kill();
        return;
    }
} 
问题是,同时可能有许多应用程序B正在执行,因此此方法不允许检测要杀死的目标应用程序B

我假设使用App B的PID来杀死它。 但我现在不知道如何获得PID来启动应用程序B


有什么线索吗?

启动应用程序后,流程对象上的Id属性将指示新启动流程的PID


var-PID=p.Id

启动应用程序后,流程对象上的Id属性将指示新启动流程的PID


var-PID=p.Id

保存对流程对象的引用:

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();

保存对流程对象的引用:

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();

使用
Id
属性<代码>p.Id
使用
Id
属性<代码>p.Id