我希望通过进程名称来获取进程的句柄。
我有PID,但是当我使用openProcess
获取句柄时,它将返回0或180,我用来使PID正常工作的函数
Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,PID);
我该怎么办?
答案 0 :(得分:7)
除非您使用CreateProcess
,否则没有直接的方法来获取流程句柄,除非您使用的是OpenProcess
。
相反,您可以使用CreateToolhelp32Snapshot
,Process32First
和Process32Next
来搜索具有所需名称的所有流程。请记住,可能有多个具有相同名称的进程。这些函数会告诉您进程ID。完成后,您可以使用OpenProcess
,就像您已经演示过的那样。如果{{1}}返回零以外的值(例如180),则它会为您提供有效的流程句柄。