我试图遍历当前在64位计算机上运行的进程,EnumProcessModules在32位程序上运行良好,但在64位程序上效果不好,我尝试使用正在使用的Devc++实现EnumProcessModulesEx(没有visualstudio),但是无法设法使头文件正常工作,请参阅此Question,因此是否在考虑是否还有其他出路?

在我的程序中,我需要知道某个特定exe执行的进程是否正在运行,该进程可以是32位或64位,因此需要同时检查两者。

最佳答案

EnumProcessModules确实要求调用进程使用与目标进程相同的体系结构(32位和64位)。但是,对于您的用例,您不需要该功能。

创建当前进程表的快照,然后迭代该快照,查找进程名称,效率更高(并且不受竞争条件的影响...)。

  • 调用 CreateToolhelp32Snapshot 创建进程表的快照
  • 使用 Process32First Process32Next 迭代快照。
  • 对于快照中的每个元素,请检查( szExeFile 结构的)PROCESSENTRY32字段以获取可执行文件的名称。

  • 您可能想要对名称进行大小写不敏感的比较,因为Windows上的文件名不区分大小写。

    关于c++ - 替代EnumProcessModulesEx?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13991650/

    10-10 23:16