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

C++ MFC-如何获取所有相关进程id(它们都是一个程序的进程),c++,mfc,C++,Mfc,我正在与VisualStudio2010合作,构建MFC应用程序 我有一个问题:如何获取一个程序的所有进程ID 示例:我运行VMware Workstation程序,所有进程都是:VMware-unity-helper.exe、vwware.exe 现在我想知道他们的身份。我该怎么做?感谢您,除非VMWare在某处发布有关其流程的信息,否则要做到这一点并不容易 如果知道进程的名称,可以扫描所有已启动的进程()并找到所需的进程。进程数从100到1000。这意味着迭代不会花费太长时间。一种解决方法是

我正在与VisualStudio2010合作,构建MFC应用程序

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

示例:我运行VMware Workstation程序,所有进程都是:VMware-unity-helper.exe、vwware.exe


现在我想知道他们的身份。我该怎么做?感谢您,除非VMWare在某处发布有关其流程的信息,否则要做到这一点并不容易


如果知道进程的名称,可以扫描所有已启动的进程()并找到所需的进程。进程数从100到1000。这意味着迭代不会花费太长时间。

一种解决方法是,迭代所有进程,并搜索名称包含vmware的进程
它显示了如何获取进程ID和名称

没有现成的方法来满足您的要求。
对于vmware示例,您可以枚举所有进程并将其名称与“vmware”匹配,但还有其他一些程序与规则不匹配(例如,如果要查找Visual Studio进程,其名称为devenv.exe,它们之间没有任何关系)

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

  • 准备一个预定义的配置文件
  • 研究感兴趣的程序,找到它们相关的进程名称,使用
    map
    存储到configure文件中
  • 当您想要获取进程id时,查询您的配置文件并获取相关的进程名称,迭代所有正在运行的进程并匹配它们
  • 当程序更改其进程或要添加新的程序支持时,您需要维护配置文件
如果进程都包含某种类型的“基”名称,则可以使用正则表达式


否则,如果您正在查找进程之间的子/父连接(哪个进程启动了哪个进程);然后,WIN32和的组合应该可以做到这一点。Process32首先返回PROCESSENTRY32 structure中的数据,该structure包含父进程的PID th32ParentProcessID。

谢谢。似乎我必须获得所有流程,然后获得所有与流程相关的VMware。你说得对。一些程序(如Visual Studio)仍然存在问题。所以不能通过名称来捕捉它的所有过程。谢谢:)谢谢,但它不太正确。我试了几个小时:)