通过窗口的句柄查找进程ID

Ami*_*adi 26 c#

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

我所做的远是这个过程的主窗口句柄,问题是,我怎样才能得到它的pid.

我正在尝试做的是读取这个过程的内存并编辑它,但如果没有PID我不能这样做(因为我需要在内存中获取它的基地址).

所以,如果任何人有任何解决方法或某些东西给我,它会很棒.

PS:此过程未在Process.GetProcesses()中显示.

TY!

Llo*_*oyd 40

您可以使用以下Windows API:

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

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

您可以在MSDN上阅读有关此功能的更多信息 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522(v=vs.85).aspx


bas*_*h.d 8

您需要在Windows API中使用P/invoke.

在类中声明一个函数

 [DllImport("User32.dll")]
 static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
Run Code Online (Sandbox Code Playgroud)

然后在你的课堂上调用它.

PInvoke.