private static IntPtr[] GetChildWindows(IntPtr ParentHandle) { //Dim ListHandle As GCHandle = GCHandle.Alloc(ChildrenList) //Try // EnumChildWindows(ParentHandle, AddressOf EnumWindow, GCHandle.ToIntPtr(ListHandle)) //Finally // If ListHandle.IsAllocated Then ListHandle.Free() //End Try //Dim Childlist As String = String.Join(". ", ChildrenList) //Return ChildrenList.ToArray List <IntPtr> ChildrenList = new List <IntPtr>(); GCHandle ListHandle = GCHandle.Alloc(ChildrenList); try { EnumWindowProcess childProc = new EnumWindowProcess(EnumWindow); EnumChildWindows(ParentHandle, childProc, GCHandle.ToIntPtr(ListHandle)); } finally { if (ListHandle.IsAllocated) { ListHandle.Free(); } } return(ChildrenList.ToArray()); }
static extern bool EnumChildWindows(IntPtr WindowHandle, EnumWindowProcess Callback, IntPtr lParam);