如何在C#中获取启动App的PID

时间:2016-04-30 09:48:14

标签: c# .net process

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

看起来像是

  

配对1:App A + App B

     

配对2:App A + App B

     

每个App A从其文件夹中启动App 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;
    }
} 

问题在于,同时可能有许多App B正在执行,因此此方法不允许检测目标App B被杀死。

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

有任何线索吗?

2 个答案:

答案 0 :(得分:3)

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

var PID = p.Id;

答案 1 :(得分:1)

保存对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();