通过steam://rungameid/#获取启动蒸汽游戏后的进程Id或进程名称

通过steam://rungameid/#获取启动蒸汽游戏后的进程Id或进程名称

这是一个古老的问题,但我刚刚做完了同样的事情(对于一个与您正在工作的项目有点相似的项目)。您可以使用System.Management中的ManagementObjects来查找进程的ParentId。如果您正在启动Steam,您将拥有Steam的进程Id,尽管按照您当前启动游戏的方式,您将需要查找Steam的进程Id。

你会发现每个游戏通常会产生2-3个不同的子进程。steam覆盖,webclienthelper,然后是游戏本身(可能还有另一个游戏的启动器)。但是,它们都应该是Steam进程的子进程,并且所有进程都应该显示在找到的进程列表中。

它看起来像这样。

代码语言:javascript运行复制List procs = Process.GetProcesses();

Process steam = procs.Find(x => x.ProcessName == "Steam");

int steamId = steam.Id;

foreach (var proc in procs)

{

using (ManagementObject mo = new ManagementObject($"win32_process.handle='{proc.Id}'"))

{

if (mo != null)

{

try

{

mo.Get();

int parentPid = Convert.ToInt32(mo["ParentProcessId"]);

if (parentPid == steamId)

{

Console.WriteLine($"{proc.ProcessName} is running as a child to {mo["ParentProcessId"]}");

}

}

catch (Exception ex)

{

// the process ended between polling all of the procs and requesting the management object

}

}

}

}

相关推荐

[世界杯]小组赛F组:德国VS墨西哥 比赛复盘
bt365体育手机客户端

[世界杯]小组赛F组:德国VS墨西哥 比赛复盘

🕒 06-27 👀 641
吸毒的概念与分类
英国365bet官方网

吸毒的概念与分类

🕒 06-27 👀 1522
脸上红疹子是怎么回事,什么原因引起的
英国365bet官方网

脸上红疹子是怎么回事,什么原因引起的

🕒 06-27 👀 3419