Example #1
0
            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());
            }
Example #2
0
 static extern bool EnumChildWindows(IntPtr WindowHandle, EnumWindowProcess Callback, IntPtr lParam);