按窗口查找进程id';s手柄

本文关键字:手柄 id 窗口 查找 进程 | 更新日期: 2023-09-27 18:27:15

我在获取进程的特定PID时遇到问题,这个进程的问题是它是一个隐藏的进程,它没有显示在任务管理器/PowerShell上,完全隐藏。

到目前为止,我所拥有的是这个过程的主窗口句柄,问题是,我如何才能获得它的pid。

我想做的是读取这个进程的内存并对其进行编辑,但如果没有PID,我想就无法做到这一点(因为我需要在内存中获取它的基地址)。

所以,如果有人能为我找到解决办法或其他什么办法,那就太好了。

p.S:Process.GetProcesses()中未显示此过程。

ty!

按窗口查找进程id';s手柄

您可以使用以下Windows API:

[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);

您传入HWND并使用out参数返回PID。

您可以在MSDN上阅读有关此功能的更多信息。

您需要将p/invoke与Windows API一起使用。

在类中声明一个函数,如

 [DllImport("User32.dll")]
 static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);

然后在你的课上叫它。

请参阅PInvoke。