无法从 GetProcessId(.. hWnd) (pInvoke) 中提取 processID

2024-04-30

我使用以下方法

    [DllImport("kernel32.dll", SetLastError=true)]
    static extern int GetProcessId(IntPtr hWnd);

尝试获取正在运行的进程的 processId,我拥有的唯一信息是 HWND。我的问题是它总是返回错误代码 6,即 ERROR_INVALID_HANDLE。我想我可以将参数更改为 int 类型,但这也不起作用。我无法枚举正在运行的进程,因为任一时间可能有超过 1 个实例在运行。

谁能看看我是否做错了什么?

注意:该进程是从暴露给框架的自动化对象生成的,并且仅提供 HWND 属性。也许还有另一种方法来获取 processID,因为我编写的代码首先负责运行它?

我的代码看起来与此类似......

自动化应用程序.Application extApp = new 自动化应用程序.Application(); extApp.Run(); ...


获取进程ID http://msdn.microsoft.com/en-us/library/ms683215.aspx当给定进程句柄而不是窗口句柄时获取进程 ID。它实际上是:

[DllImport("kernel32", SetLastError = true)]
static extern int GetProcessId(IntPtr hProcess);

如果你有一个窗口句柄,那么你想要获取窗口线程进程ID http://msdn.microsoft.com/en-us/library/ms633522.aspx功能:

[DllImport("user32")]
static extern int GetWindowThreadProcessId(IntPtr hWnd, out int processId);

这将返回线程 ID,并将进程 ID 放入输出参数中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法从 GetProcessId(.. hWnd) (pInvoke) 中提取 processID 的相关文章

随机推荐