internal void ShowWindows() { List <IntPtr> listWinHwnd = new List <IntPtr>(); WinAPI.EnumWindows(new WinAPI.EnumWindowsProc((hWnd, lParam) => { uint pid = 0; WinAPI.GetWindowThreadProcessId(hWnd, out pid); if (pid == _process.Id) { //listWinHwnd.Add(hWnd); WinAPI.ShowWindow(hWnd, WinAPI.WindowShowCmd.SW_SHOWNORMAL); } return(true); }), (IntPtr)0); //WinTree root = new WinTree(IntPtr.Zero); foreach (IntPtr hWnd in listWinHwnd) { //root.subWin.Add(new WinTree(hWnd)); WinAPI.EnumChildWindows(hWnd, new WinAPI.EnumWindowsProc((hChildWnd, lParam) => { WinAPI.ShowWindow(hChildWnd, WinAPI.WindowShowCmd.SW_SHOWNORMAL); return(true); }), 0); } }
//public Window FindWindowContains(string winText) //{ // try // { // Window findWindow = null; // WaitUntil((String findName) => // { // WinAPI.EnumWindows(new WinAPI.EnumWindowsProc((hWnd, lParam) => // { // uint pid = 0; // WinAPI.GetWindowThreadProcessId(hWnd, out pid); // if (pid != _process.Id) // { // return true; // } // int length = WinAPI.GetWindowTextLength(hWnd); // StringBuilder windowName = new StringBuilder(length + 1); // WinAPI.GetWindowText(hWnd, windowName, windowName.Capacity); // if (windowName.ToString().Replace("&", "").Contains(findName)) // { // findWindow = (Window)Activator.CreateInstance(typeof(Window), hWnd, findName); // return false; // } // return true; // }), // (IntPtr)0); // if (findWindow != null) // { // return true; // } // return false; // }, // winText, // 60); // Log.INFO(string.Format("Finded Winow:[{0},{1}], in PID:[{2}]", winText, findWindow.hwnd.ToString("X8"), _process.Id.ToString("X8"))); // return findWindow; // } // catch (Exception e) // { // throw new ArgumentException(string.Format("can not find window:[{0}] in PID:[{1}]", winText, _process.Id.ToString("X8"))); // } //} public Window TryFindWindow(string winText) { try { Window findWindow = null; WaitUntil((String findName) => { WinAPI.EnumWindows(new WinAPI.EnumWindowsProc((hWnd, lParam) => { uint pid = 0; WinAPI.GetWindowThreadProcessId(hWnd, out pid); if (pid != _process.Id) { return(true); } int length = WinAPI.GetWindowTextLength(hWnd); StringBuilder windowName = new StringBuilder(length + 1); WinAPI.GetWindowText(hWnd, windowName, windowName.Capacity); if (windowName.ToString().Replace("&", "") == findName) { findWindow = (Window)Activator.CreateInstance(typeof(Window), hWnd, findName); return(false); } return(true); }), (IntPtr)0); if (findWindow != null) { return(true); } return(false); }, winText, 5); Log.INFO(string.Format("Finded Winow:[{0},{1}], in PID:[{2}]", winText, findWindow.hwnd.ToString("X8"), _process.Id.ToString("X8"))); return(findWindow); } catch (Exception e) { return(null); } }
public WinTree GetWindowTree() { List <IntPtr> listWinHwnd = new List <IntPtr>(); WinAPI.EnumWindows(new WinAPI.EnumWindowsProc((hWnd, lParam) => { uint pid = 0; WinAPI.GetWindowThreadProcessId(hWnd, out pid); if (pid == _process.Id) { listWinHwnd.Add(hWnd); } return(true); }), (IntPtr)0); WinTree root = new WinTree(IntPtr.Zero); foreach (IntPtr hWnd in listWinHwnd) { root.subWin.Add(new WinTree(hWnd)); WinAPI.EnumChildWindows(hWnd, new WinAPI.EnumWindowsProc((hChildWnd, lParam) => { IntPtr parenthWind = WinAPI.GetParent(hChildWnd); root.Find(parenthWind).subWin.Add(new WinTree(hChildWnd)); return(true); }), 0); } return(root); }