private int GetTabIndexToActivate(string tabsUrl) { AccessibleObjectFromWindow(GetDirectUIHWND(_hWnd), OBJID.OBJID_WINDOW, ref _accessible); CheckForAccessible(); var index = 0; var ieDirectUIHWND = new TabActivator(_hWnd); foreach (var accessor in ieDirectUIHWND.Children) { foreach (var child in accessor.Children) { foreach (var tab in child.Children) { var tabUrl = tab.LocationUrl; if (!string.IsNullOrEmpty(tabUrl)) { if (tab.LocationUrl.Contains(tabsUrl)) { return(index); } } index++; } } } return(-1); }
internal void ActivateByTabsUrl(string tabsUrl) { var tabIndexToActivate = GetTabIndexToActivate(tabsUrl); AccessibleObjectFromWindow(GetDirectUIHWND(_hWnd), OBJID.OBJID_WINDOW, ref _accessible); CheckForAccessible(); var index = 0; var ieDirectUIHWND = new TabActivator(_hWnd); foreach (var accessor in ieDirectUIHWND.Children) { foreach (var child in accessor.Children) { foreach (var tab in child.Children) { if (tabIndexToActivate >= child.ChildCount - 1) { return; } if (index == tabIndexToActivate) { tab.ActivateTab(); return; } index++; } } } }
private bool PushUrlToPolicyCenterWindow(string url) { InternetExplorer targetWindow = null; bool pushSuccessful = false; try { for (int i = 0; i < WindowsInstance.Count; i++) { var tempIe = WindowsInstance.Item(i) as InternetExplorer; if (!IsIeAndNamedWindow(tempIe, WindowName)) { continue; } targetWindow = tempIe; break; } if (targetWindow != null) { targetWindow.Navigate2(url, null, "_self", null, null); try { var hWnd = (IntPtr)targetWindow.HWND; TabActivator.ShowWindowAsync(hWnd, TabActivator.SW_SHOWMAXIMIZED); TabActivator.SetForegroundWindow(hWnd); new TabActivator(hWnd).ActivateByTabsUrl(url); } catch (Exception aex) { _logger.Warn("*** An error occurred. See details below. ***"); _logger.Error("*** {0} ***", aex.Message); _logger.Error("*** {0} ***", aex.StackTrace); } pushSuccessful = true; } } catch (Exception ex) { pushSuccessful = false; _logger.Warn("*** An error occurred. See details below. ***"); _logger.Error("*** {0} ***", ex.Message); _logger.Error("*** {0} ***", ex.StackTrace); } return(pushSuccessful); }