2016-04-30 59 views
1

我有几对相同的应用程序。如何在C#中启动应用程序的PID#

它看起来像

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

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

和等

每个应用程序A开始应用程序B从它的文件夹。 (他们都是在同一个文件夹。)

所以我开始像这样

应用程序的代码

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将其杀死。

我假设使用PID的应用程序B来杀死它。 但我不知道如何获得PID此刻开始应用程序B ...

任何线索?

+1

使用'Id'属性。 'p.Id' – mostafa8026

回答

3

启动该应用之后,处理对象上的Id属性将指示新启动的进程的PID

var PID = p.Id;

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(); 
相关问题