// Wait for a window to become available public static int WinWait(string className, string windowName, WinMatchMode mode = WinMatchMode.Start, long timeout = 0) { int hWnd = 0; int pollDelay = 250; long startTime = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; while ((DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond) - startTime < (timeout * 1000) && hWnd == 0) { hWnd = FindWindow(className, windowName, mode); Thread.Sleep(pollDelay); } return(hWnd); }
private static int FindWindow(string className, string windowName, WinMatchMode mode = WinMatchMode.Start) { switch (mode) { case WinMatchMode.Exact: return(WinApi.FindWindow(className, windowName)); case WinMatchMode.Start: return(FindWindowStart(className, windowName)); case WinMatchMode.Any: return(FindWindowAny(className, windowName)); default: return(0); } }
// Retrieves the internal handle of a window. // Example: int hWnd = Automate.WinGetHandle("KCMLMasterForm_32", "OWS Version2"); public static int WinGetHandle(string className, string windowName, WinMatchMode mode = WinMatchMode.Start) { return(FindWindow(className, windowName, mode)); }
// Check if a window exists public static bool WinExists(string className, string windowName, WinMatchMode mode = WinMatchMode.Start) { return(FindWindow(className, windowName, mode) != 0 ? true : false); }