替代EnumProcessModulesEx?

时间:2012-12-21 14:08:58

标签: c++ winapi

我正在尝试迭代当前在64位机器上运行的进程,EnumProcessModules在32位程序中工作得很好,但对64位程序没有任何好处,我尝试用我正在使用的Devc ++实现EnumProcessModulesEx(没有visualstudio)但是无法设法使头文件工作,请参阅此Question,所以在考虑是否还有其他出路?

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 调用CreateToolhelp32Snapshot创建流程表的快照

  2. 使用Process32FirstProcess32Next来迭代快照。

  3. 对于快照中的每个元素,请检查szExeFile字段(PROCESSENTRY32结构)以获取可执行文件名称。

  4. 您可能希望对名称进行不区分大小写的比较,因为Windows上的文件名不区分大小写。