我有几对相同的应用程序。
看起来像是
配对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 ......
有任何线索吗?
答案 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();