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

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

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

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

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

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

TY!

您可以使用以下Windows API:

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

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

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

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

在你的类中声明一个函数就像

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

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

见PInvoke 。