GetProcessId returning zero

本文关键字:zero returning GetProcessId | 更新日期: 2023-09-27 18:30:41

我有一个充满进程句柄的数组,现在正在尝试获取每个进程的相关进程 ID。

但是,我所有的进程 ID 都恢复为零。任何人都可以指出我错过了什么明显的问题?

非常感谢

"子"数组由进程 ID 填充,因此:

currChild = FindWindowEx(hParent, prevChild, null, null);

然后我尝试获取进程 ID:

for (int i = 0; i < children.Count; ++i)
 {
      handle = children[i];
      pid = GetProcessId(handle);
      Console.WriteLine(children[i].ToString("X") + " : " + pid.ToString());

蜜蜂属:

[DllImport("user32.dll", EntryPoint = "FindWindowEx", CharSet = CharSet.Auto)]
   static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("kernel32.dll", EntryPoint = "GetProcessId", CharSet = CharSet.Auto)]
    static extern int GetProcessId(IntPtr handle);

输出:

2417E2 : 0
B20D9A : 0
48108C : 0
8809D6 : 0
B5140E : 0
4207F6 : 0
4213B0 : 0
5D15DA : 0
etc ....

GetProcessId returning zero

请注意,GetProcessId接受进程句柄而不是窗口句柄作为输入对于后者,您可以改用GetWindowThreadProcessId

请参阅 GetWindowThreadProcessId