如何获得所有进程id相关(他们都是一个程序的进程)
MFC - How to get all process id related (they are all process of one program)
我正在使用Visual Studio 2010,构建MFC应用程序。
我有一个问题:如何获得一个程序的所有进程ID。
示例:我运行VMware Workstation程序,所有进程为:VMware -unity-helper.exe, VMware .exe。
现在我想要得到它们的id。我该怎么做呢?由于
要做到这一点并不容易,除非VMWare在某处发布有关其进程的信息。
如果您知道进程的名称,您可以扫描所有启动的进程(http://msdn.microsoft.com/en-us/library/windows/desktop/ms686832(v=vs.85).aspx)并找到您需要的进程。进程数为100 ~ 1000。这意味着迭代将不会花费太长时间。
一种解决方法是,遍历所有进程并搜索名称包含vmware的进程它展示了如何获取进程id和名称。http://msdn.microsoft.com/en-us/library/windows/desktop/ms682623%28v=vs.85%29.aspx
没有办法达到你的要求。
对于你的vmware的例子,你可以枚举所有的进程,并匹配他们的名字与"vmware",但有一些其他的程序不匹配的规则,(例如,如果你想找到Visual Studio进程,它的名字是devenv.exe,他们没有任何关系。)
为你的目标。您可以参考以下信息。
- 准备预定义的配置文件。
- 研究感兴趣的程序,找到它们相关的进程名,使用
map
存储到配置文件中。 - 当你想要得到进程id时,查询你的配置文件并得到相关的进程名,迭代所有正在运行的进程并匹配它们。
- 当程序改变其进程或想要添加新的程序支持时,需要维护您的配置文件。
如果所有进程都包含某种类型的"基"名,则可以使用正则表达式。
Else,如果您正在查找进程之间的子/父连接(哪个进程启动了哪个进程);那么WIN32 EnumProcesses和Process32First的组合应该可以做到这一点。Process32First以PROCESSENTRY32结构返回数据,该结构包含父节点的PID th32ParentProcessID。
- IPC使用多个管道和分支进程来运行Python程序
- CoreCLR 中的检测探查器 - 将帮助程序程序集加载到 dotnet 进程的方法
- 每次使用带有LOCK_EX标志的LOCK_NB时,相同的程序/进程都会获取锁
- 如何保护非托管应用程序中的字符串不受进程转储的影响
- 在 Windows/C++ 上使用多进程应用程序的高精度定时操作
- 从Visual Studio 2017运行MPI应用程序,每个进程在不同的cmd窗口中
- 在程序继续C++时保持进程运行
- 64 位进程中的 AnyCPU C# DLL 无法引用 64 位C++ DLL(给出错误:无法加载文件或程序集)
- Qtwebengine进程在应用程序关闭后不会关闭
- 内核模式驱动程序可以在任何进程上执行读取进程内存吗?
- 与 Python 中子进程中的另一个应用程序的交互式会话
- FIFO块程序,直到其他进程读取
- C++程序将进程置于前台(如果已在运行),否则创建一个新进程
- Electron应用程序和Win32本机桌面应用程序之间的进程间通信
- gdb如何读取它正在调试的程序/进程的寄存器值?寄存器如何与进程相关联?
- 多次运行程序,同时保留一个进程
- 分叉程序在<defunct>一段时间后给出进程
- 从多个进程和同一进程中注册同一ETW TraceLogging提供程序GUID
- MPI在某个进程找到解决方案时使用广播结束程序
- 查找位置(寻找c++初学者)以创建Windows Vista x64 Ultimate的挂起进程程序