我在获取进程的特定PID时遇到问题, 这个过程的问题在于它是一个隐藏的过程,它没有在任务管理器/ powershell上显示,完全隐藏。
我所做的远是这个过程的主要窗口句柄,问题是,我怎样才能得到它的pid。
我正在尝试做的是读取这个过程的内存并进行编辑,但是如果没有我想到的PID就不能这样做(因为我需要在内存中获取它的基地址)。
所以,如果有人为我做任何解决方法或事情,那就太好了。
P.S:此过程未在Process.GetProcesses()中显示。
TY!
答案 0 :(得分:39)
您可以使用以下Windows API:
[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
传入HWND并使用out参数返回PID。
您可以在MSDN上阅读有关此功能的更多信息 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522(v=vs.85).aspx
答案 1 :(得分:8)
您需要在Windows API中使用P / invoke。
在类中声明一个函数,如
[DllImport("User32.dll")]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
然后在你的课堂上调用它。
请参阅PInvoke。