我正在尝试迭代当前在 64 位机器上运行的进程,EnumProcessModules 与 32 位程序配合得很好,但对 64 位程序没有任何好处,我尝试使用我正在使用的 Devc++ 实现 EnumProcessModulesEx(没有visualstudio)但不能t 设法使头文件工作,看到这个问题,所以在想是否有另一种出路?
在我的程序中,我需要知道某个特定 exe 执行的进程是否正在运行,该进程可以是 32 位或 64 位,因此需要同时检查。
EnumProcessModules
确实要求调用进程使用与目标进程相同的架构(32 位与 64 位)。但是,对于您的用例,您不需要该功能。
创建当前进程表的快照然后迭代该快照以查找进程名称更有效(并且不会受到竞争条件的影响......):
调用CreateToolhelp32Snapshot
创建进程表的快照
使用Process32First
和Process32Next
迭代快照。
对于快照中的每个元素,检查szExeFile
(结构的)字段PROCESSENTRY32
以获取可执行文件名称。
您可能希望对名称进行不区分大小写的比较,因为 Windows 上的文件名不区分大小写。