MFC - 如何获取所有进程ID相关(它们都是一个程序的进程)

时间:2014-06-24 08:15:30

标签: c++ mfc

我正在使用Visual Studio 2010,构建MFC应用程序。

我有一个问题:如何获取一个程序的所有进程ID。

示例:我运行VMware Workstation程序,它们的所有进程都是:vmware-unity-helper.exe,vwware.exe。

现在我想得到他们的身份。我怎样才能做到这一点? Thankss

4 个答案:

答案 0 :(得分:0)

除非VMWare在某处发布有关其流程的信息,否则没有简单的方法。

如果您知道进程的名称,则可以扫描所有已启动的进程(http://msdn.microsoft.com/en-us/library/windows/desktop/ms686832(v=vs.85).aspx)并找到所需的进程。进程数从100到1000.这意味着迭代不会花费太长时间。

答案 1 :(得分:0)

一种解决方法是,遍历所有进程并搜索名称中包含 vmware 的进程 它显示了如何获取进程ID和名称。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms682623%28v=vs.85%29.aspx

答案 2 :(得分:0)

没有办法达到你的要求 对于你的vmware示例,你可以枚举所有进程并将它们与" vmware"匹配,但是有一些其他程序与规则不匹配(例如,如果你想找到Visual Studio进程,它的名字是devenv.exe,它们没有任何关系。)。

实现目标的一种方式。您可以参考以下信息。

  • 准备预定义的配置文件。
  • 研究程序有趣,并找到它们的相关进程名称,使用map存储到配置文件中。
  • 如果要获取进程ID,请查询配置文件并获取相关进程名称,迭代所有正在运行的进程并匹配它们。
  • 您需要在程序更改其进程或要添加新程序支持时维护配置文件。

答案 3 :(得分:0)

如果这些流程都包含" base"某种名称,可以使用正则表达式。

否则,如果您正在寻找进程之间的子/父连接(哪个进程启动哪个进程);那么WIN32 EnumProcessesProcess32First的组合应该可以解决问题。 Process32First返回PROCESSENTRY32结构中的数据,该结构包含父级的PID th32ParentProcessID。