2016-04-30 15 views
1

私はいくつかの同じアプリを持っています。C#で起動したアプリケーションのPIDを取得するには

ペア1

ように見えます:各アプリケーションAがアプリケーションを起動するアプリケーションA +のApp B

となど

:アプリのA +のApp B

ペア2 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は、この方法は、殺すためにターゲットのApp Bを検出することはできませんので、実行することができることです。

私はそれを殺すためにApp BのPIDを使用すると仮定します。 しかし、私はを入手する方法を知らないのですが、今度はアプリケーションBを起動するためにPID ...

手掛かりがありますか?

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

// ... 

p.Kill(); 

か:

+1

「Id」プロパティを使用してください。 'p.Id' – mostafa8026

答えて

3

アプリを起動した後、ProcessオブジェクトのIdプロパティは、新たに起動されたプロセスのPID

var PID = p.Id;

1

保存Processオブジェクトへの参照を示しますそのPIDを覚えておいてください。

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

long pid = p.Id; 

// ... 

Process.GetProcessById(pid).Kill(); 
関連する問題