按窗口查找进程id';s手柄
本文关键字:手柄 id 窗口 查找 进程 | 更新日期: 2023-09-27 18:27:15
我在获取进程的特定PID时遇到问题,这个进程的问题是它是一个隐藏的进程,它没有显示在任务管理器/PowerShell上,完全隐藏。
到目前为止,我所拥有的是这个过程的主窗口句柄,问题是,我如何才能获得它的pid。
我想做的是读取这个进程的内存并对其进行编辑,但如果没有PID,我想就无法做到这一点(因为我需要在内存中获取它的基地址)。
所以,如果有人能为我找到解决办法或其他什么办法,那就太好了。
p.S:Process.GetProcesses()
中未显示此过程。
ty!
您可以使用以下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。