簡體   English   中英

GetProcessId返回零

[英]GetProcessId returning zero

我有一個充滿進程句柄的數組,現在正在嘗試獲取每個進程的相關進程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());

API:

[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接受進程句柄而不是窗口句柄作為輸入。對於后者,您可以改用GetWindowThreadProcessId

請參閱GetWindowThreadProcessId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM