我正在使用Visual Studio 2010,构建MFC应用程序。
我有一个问题:如何获取一个程序的所有进程ID。
示例:我运行VMware Workstation程序,它们的所有进程都是:vmware-unity-helper.exe,vwware.exe。
现在我想得到他们的身份。我怎样才能做到这一点? Thankss
答案 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
存储到配置文件中。 答案 3 :(得分:0)
如果这些流程都包含" base"某种名称,可以使用正则表达式。
否则,如果您正在寻找进程之间的子/父连接(哪个进程启动哪个进程);那么WIN32 EnumProcesses和Process32First的组合应该可以解决问题。 Process32First返回PROCESSENTRY32结构中的数据,该结构包含父级的PID th32ParentProcessID。