1

我正在尝试迭代当前在 64 位机器上运行的进程,EnumProcessModules 与 32 位程序配合得很好,但对 64 位程序没有任何好处,我尝试使用我正在使用的 Devc++ 实现 EnumProcessModulesEx(没有visualstudio)但不能t 设法使头文件工作,看到这个问题,所以在想是否有另一种出路?

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

4

1 回答 1

1

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

创建当前进程表的快照然后迭代该快照以查找进程名称更有效(并且不会受到竞争条件的影响......):

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

  2. 使用Process32FirstProcess32Next迭代快照。

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

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

于 2012-12-21T14:20:32.327 回答