得到所有句柄

时间:2012-12-23 14:26:44

标签: winapi handle

如何通过Win32获取窗口的所有句柄?我找到了这段代码,但我不知道它是如何工作的!

[DllImport("user32.dll")]
  [return: MarshalAs(UnmanagedType.Bool)]
  static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc,   IntPtr lParam);

  private List<IntPtr> GetChildWindows(IntPtr parent)  
  {  
    List<IntPtr> result = new List<IntPtr>();  
    GCHandle listHandle = GCHandle.Alloc(result);  
    try  
    {  
         EnumWindowProc childProc = new EnumWindowProc(EnumWindow);  
         EnumChildWindows(parent, childProc, GCHandle.ToIntPtr(listHandle));  
    }  
    finally  
    {  
         if (listHandle.IsAllocated)  
               listHandle.Free();  
    }  
    return result;  
   }

0 个答案:

没有答案