private void GetChildWindows() { WinAPI.EnumWindowsProc ecwp = new WinAPI.EnumWindowsProc(EnumChildProc); ETWP_Param lParam = new ETWP_Param(); lParam.m_parent = this; lParam.m_nThreadID = m_nThreadID; GCHandle gch = GCHandle.Alloc(lParam); WinAPI.EnumChildWindows(m_hWnd, ecwp, GCHandle.ToIntPtr(gch)); gch.Free(); }
public static IntPtr[] GetChildWindows(IntPtr Parent) { List <IntPtr> children = new List <IntPtr>(); GCHandle listHandle = GCHandle.Alloc(children); try { WinAPI.EnumWindowsProc childProc = new WinAPI.EnumWindowsProc(EnumWindow); WinAPI.EnumChildWindows(Parent, childProc, GCHandle.ToIntPtr(listHandle)); } finally { if (listHandle.IsAllocated) { listHandle.Free(); } } return(children.ToArray()); }
public static List <Window> GetProcessWindows(Process process) { WinAPI.EnumWindowsProc etwp = new WinAPI.EnumWindowsProc(EnumThreadWndProc); ETWP_Param lParam = new ETWP_Param(); lParam.m_hAppMainWnd = (int)process.MainWindowHandle; lParam.m_windowList = new List <Window>(); GCHandle gch = GCHandle.Alloc(lParam); RestoreWindow(lParam.m_hAppMainWnd); foreach (ProcessThread thread in process.Threads) { lParam.m_nThreadID = thread.Id; WinAPI.EnumThreadWindows(thread.Id, etwp, GCHandle.ToIntPtr(gch)); } gch.Free(); GenerateHierarchicalIDs(lParam.m_windowList); return(lParam.m_windowList); }
public static void GetWindows() { WinAPI.EnumWindowsProc callback = new WinAPI.EnumWindowsProc(EnumWindows); WinAPI.EnumWindows(callback, 0); }
public static extern bool EnumWindows(WinAPI.EnumWindowsProc enumProc, IntPtr lParam);
public static extern int EnumWindows(WinAPI.EnumWindowsProc ewp, int lParam);
public static extern int EnumChildWindows(int hwnd, WinAPI.EnumWindowsProc callbackFunc, int lParam);