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