我试图遍历当前在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/