private bool FindActivateBrowserWindow(IntPtr hwnd, SettingValues.BrowserInfo browserInfo) { if (WinAPI.IsWindow(hwnd)) { if (WindowIsOnCurrentDesktop(hwnd)) { Debug.WriteLine("Activate Known Browser " + Current + " " + hwnd); ActivateBrowserWindow(hwnd); return(true); } } // Our last active record was not valid so find topmost on this desktop BrowserWinInfo browserWinInfo = new BrowserWinInfo();; bool notFinished = true; do { var window = WinAPI.FindWindowEx(IntPtr.Zero, browserWinInfo.last, browserInfo.ClassName, null); notFinished = IterateFindTopLevelBrowserOnCurrentDesktop(window, browserWinInfo, browserInfo); } while (notFinished); if (browserWinInfo.topOnDesktop != IntPtr.Zero) { Debug.WriteLine("Activate Unknown Browser " + Current + " " + browserWinInfo.topOnDesktop); ActivateBrowserWindow(browserWinInfo.topOnDesktop); return(true); } return(false); }
private bool IsWindowDefaultBrowser(IntPtr hwnd, SettingValues.BrowserInfo browserInfo) { var exename = GetWindowExeName(hwnd); return(browserInfo != null && exename != null && exename.ToUpper() == browserInfo.ExeName.ToUpper()); }
private bool IterateFindTopLevelBrowserOnCurrentDesktop(IntPtr hwnd, BrowserWinInfo browserWinInfo, SettingValues.BrowserInfo browserInfo) { if (hwnd == IntPtr.Zero) { // None left to check return(false); } browserWinInfo.last = hwnd; if (browserWinInfo.top == IntPtr.Zero && IsWindowDefaultBrowser(hwnd, browserInfo)) { browserWinInfo.top = hwnd; if (WindowIsOnCurrentDesktop(hwnd)) { // Already top level so nothing to do browserWinInfo.topOnDesktop = IntPtr.Zero; return(false); } } if (WindowIsOnCurrentDesktop(hwnd) && IsWindowDefaultBrowser(hwnd, browserInfo)) { browserWinInfo.topOnDesktop = hwnd; return(false); } // Keep going return(true); }
private bool IsWindowDefaultBrowser(IntPtr hwnd, SettingValues.BrowserInfo browserInfo) { return(browserInfo != null && GetWindowExeName(hwnd) == browserInfo.ExeName); }