通过PID获取进程句柄

sam*_*sam 0 delphi

我想通过进程名称获取进程的句柄.

我有PID,但当我openProcess用来获取句柄时,它总是返回0或180,我用来使PID正常工作的功能

Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,PID);

我该怎么办?

Rob*_*edy 7

除非您正在使用,否则没有直接的方法来获取进程句柄,只要您知道它的名称CreateProcess.

相反,您可以使用CreateToolhelp32Snapshot,Process32FirstProcess32Next搜索具有所需名称的所有进程.请记住,可能有多个具有相同名称的进程.这些函数会告诉您进程ID.一旦你有了,你可以使用OpenProcess,正如你已经演示过的那样.如果OpenProcess返回零以外的其他内容(例如180),则它会为您提供有效的进程句柄.

  • 我不知道你是怎么从我在答案中写的那样得出结论的.无论如何,一个进程可能有许多句柄打开它.你可以在同一个PID上调用两次OpenProcess,你应该得到两个不同的数值 - 两个句柄,一个进程.您可以从两个不同的程序在相同的PID上调用OpenProcess,并且您可能获得两个不同的值,或者您可能在每个程序中获得相同的值,但这些仍然是两个不同的句柄. (3认同)