【问题标题】:Find process id by window's handle通过窗口句柄查找进程 ID
【发布时间】:2019-09-26 16:26:00
【问题描述】:

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

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

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

所以,如果有人对我有任何解决方法或什么,那就太好了。

P.S:这个过程没有显示在 Process.GetProcesses() 中。

泰!

【问题讨论】:

  • 你需要进程ID吗?

标签: c#


【解决方案1】:

您可以使用以下 Windows API:

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

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

你可以阅读更多关于这个功能here on MSDN

【讨论】:

    【解决方案2】:

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

    在你的类中声明一个函数

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

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

    PInvoke

    【讨论】:

    • 这个实际上返回 0,对我不起作用,但感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2013-12-08
    • 2010-12-25
    • 2012-05-06
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多