public static WindowHandle GetSteamWarningWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Equals("vguiPopupWindow") && (wh.GetWindowText().StartsWith("Steam - ") || wh.GetWindowText().StartsWith("Steam — ")))); }
// 刷新列表 private void refresh() { listView.Items.Clear(); var allWindows = TopLevelWindowUtils.FindWindows(w => w.IsValid && w.GetWindowText() != "" && w.GetWindowText() != "Default IME" && w.GetWindowText() != "MSCTFIME UI" ); foreach (var windowHandle in allWindows) { try { listView.Items.Add(new WindowStatus(windowHandle)); } catch (Exception e) { Console.WriteLine(e.Message); } } listView.Items.SortDescriptions.Clear(); listView.Items.SortDescriptions.Add(lastSortDescription); }
private void button1_Click(object sender, RoutedEventArgs e) { button1.Visibility = Visibility.Hidden; this.grid1.Children.Add(windowsFormsHost1); ProcessStartInfo psi = new ProcessStartInfo(@"C:\Program Files (x86)\LINQPad5\LINQPad.exe"); _process = Process.Start(psi); _process.WaitForInputIdle(); var winHandle = TopLevelWindowUtils.FindWindow(a => a.GetWindowText().Equals("LINQPad 5")); while (winHandle.RawPtr == IntPtr.Zero) { Thread.Yield(); winHandle = TopLevelWindowUtils.FindWindow(a => a.GetWindowText().Equals("LINQPad 5")); } hwnd = winHandle.RawPtr; SetParent(hwnd, _panel.Handle); // remove control box int style = GetWindowLong(hwnd, GWL_STYLE); style = style & ~WS_CAPTION & ~WS_THICKFRAME; SetWindowLong(hwnd, GWL_STYLE, style); // resize embedded application & refresh ResizeEmbeddedApp(); }
public void FindNotepad() { var window = TopLevelWindowUtils.FindWindow(w => w.GetWindowText().Contains("Notepad")); // TODO we should really just create a window that we control and check against that Assert.IsTrue(window.GetWindowText().Contains("Notepad")); }
private const string PrimaryClassName = "Shell_TrayWnd"; //Name of taskbar class static void CheckTaskbar() { if (PrimaryClassName == TopLevelWindowUtils.GetForegroundWindow().GetClassName())//Checking on selected taskbar { user32.keybd_event(0, 0, 0, 0); user32.SetForegroundWindow(user32.GetDesktopWindow());//not work without click(previous line) } }
public static void WriteToNotepad(string message) { var processed = false; if (Tools.IsWindows) { _ = TopLevelWindowUtils.FindWindow(wh => { var title = wh.GetWindowText(); if (string.IsNullOrWhiteSpace(title)) { return(false); } var kind = WindowKind.Invalid; if (title.EndsWith(" - Notepad")) { kind = WindowKind.Notepad; } else if (title.EndsWith(" - Notepad2")) { kind = WindowKind.Notepad2; } else if (notepadPlusPlusRegex.IsMatch(title)) { kind = WindowKind.NotepadPlusPlus; } switch (kind) { case WindowKind.Notepad: { var handle = NativeMethods.FindWindowEx(wh.RawPtr, IntPtr.Zero, "EDIT", null); WriteToNotepad(handle, message); processed = true; return(true); } case WindowKind.Notepad2: case WindowKind.NotepadPlusPlus: { var handle = NativeMethods.FindWindowEx(wh.RawPtr, IntPtr.Zero, "Scintilla", null); WriteToNotepadPlusPlus(handle, message); processed = true; return(true); } default: return(false); } }); } if (processed == false) { FileLog.Log(message); } }
public static WindowHandle GetDstWindow() { // Also checking for vguiPopupWindow class name to avoid catching things like browser tabs. WindowHandle windowHandle = TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Equals("opengles2.0") && (wh.GetWindowText().StartsWith("Don't Starve Together"))); return(windowHandle); }
public static List <Taskbar> GetAllSecondaryTaskbars() { var allHandles = TopLevelWindowUtils.FindWindows(wh => wh.GetClassName().Contains(SecondaryClassName)).ToList(); var allSecondaryTaskbars = new List <Taskbar>(); allHandles.ForEach(x => allSecondaryTaskbars.Add(new Taskbar(x))); return(allSecondaryTaskbars); }
public static WindowHandle GetSteamLoginWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Equals("vguiPopupWindow") && (wh.GetWindowText().Contains("Steam") && !wh.GetWindowText().Contains("-") && !wh.GetWindowText().Contains("—") && wh.GetWindowText().Length > 5))); }
public void ListAllWindows() { var allWindows = TopLevelWindowUtils.FindWindows(w => w.GetWindowText() != ""); Console.WriteLine("All the windows that are currently present:"); foreach (var windowHandle in allWindows) { Console.WriteLine(windowHandle.GetWindowText()); } }
public static WindowHandle GetSteamGuardWindow() { // Also checking for vguiPopupWindow class name to avoid catching things like browser tabs. WindowHandle windowHandle = TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Equals("vguiPopupWindow") && (wh.GetWindowText().StartsWith("Steam Guard") || wh.GetWindowText().StartsWith("Steam 令牌") || wh.GetWindowText().StartsWith("Steam ガード"))); return(windowHandle); }
//Gets the window name of specified table protected string getTableWindowName() { try { var window = TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().Contains(tableName) && !wh.GetWindowText().Contains("Lobby")); string tableWindowName = window.GetWindowText(); return(tableWindowName); } catch { return(null); } }
/// <summary> /// Sends the input to LINQPad. Simulates key inputs to run a linq script (F5) /// </summary> private static void SendInputToLinqPad(string linqPadVersion) { try { WindowHandle linqPad = TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().Contains($"LINQPad {linqPadVersion}")); IntPtr intPtr = linqPad.RawPtr; ShowWindowAsync(intPtr, SwShowNormal); SetForegroundWindow(intPtr); } catch (Exception e) { Log.Write(e, "Error during LINQPad Sending inputs"); } }
public static WindowHandle GetSteamLoginWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().Contains("Steam") && !wh.GetWindowText().Contains("-") && !wh.GetWindowText().Contains("—") && wh.GetWindowText().Length > 5)); }
public static Taskbar GetPrimaryTaskbar() { var handle = TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Contains(PrimaryClassName)); return(new Taskbar(handle)); }
public void FindNotepad() { var window = TopLevelWindowUtils.FindWindow(w => w.GetWindowText().Contains("Notepad")); }
private static void Main(string[] args) { if (args.Length == 1) { switch (args[0]) { case "--force": force = true; break; case "--version": Console.Out.WriteLine($"Alice's Window Closer App v{version}"); Environment.Exit(0); //We close because we were only showing the version. break; default: Console.Out.WriteLine($"Alice's Window Closer App v{version.Major}.{version.Minor}"); Console.Out.WriteLine("--force Kill any processes that have an open window. (Dangerous!)"); Console.Out.WriteLine("--help Show help flags"); Environment.Exit(0); //We close because we were only showing the help. break; } } List <Process> taskBarProcesses = Process.GetProcesses().Where(p => !string.IsNullOrEmpty(p.MainWindowTitle)).Where(p => p.MainWindowHandle != GetConsoleWindow()).ToList(); SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); foreach (InternetExplorer item in shellWindows) { try { item.Quit(); } catch (System.Runtime.InteropServices.COMException e) { Console.Error.WriteLine("Error trying to close " + item.FullName + ", Reason: " + e.Message); } } taskBarProcesses.ForEach((task) => { #if DEBUG if (task.ProcessName == "devenv") { return; } #endif TopLevelWindowUtils.FindWindows((wh) => IsWindowHandleOwnedBy(wh, task)).ToList() .ForEach((wh) => { Console.Out.WriteLine($"Closing {task.ProcessName}"); PostMessage(wh.RawPtr.ToInt32(), WM_Close, 0, 0); int LastError = Marshal.GetLastWin32Error(); string errorMessage = new Win32Exception(LastError).Message; if (LastError != 0) { Console.Error.WriteLine($"Failed to close {task.MainWindowTitle}: {errorMessage}"); } }); if (force) { Thread.Sleep(500); Console.Out.WriteLine($"Killing {task.ProcessName}"); try { task.Refresh(); if (!task.HasExited) { task.Kill(); } } catch (InvalidOperationException e) { Console.Error.WriteLine($"Something went wrong trying to kill {task.ProcessName}: {e.Message}"); } } }); #if DEBUG Console.ReadKey(); #endif }
public void ShowForeground() { var windowHandle = TopLevelWindowUtils.GetForegroundWindow(); Console.WriteLine(windowHandle.GetWindowText()); }
private static WindowHandle GetMainSteamClientWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Equals("vguiPopupWindow") && wh.GetWindowText().Equals("Steam"))); }
public static WindowHandle GetSteamGuardWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam Guard"))); }
public static WindowHandle GetSteamWarningWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam - ") || wh.GetWindowText().StartsWith("Steam — "))); }
private void Type2FA(int index, int tryCount) { loginThreads.Add(Thread.CurrentThread); // Need both the Steam Login and Steam Guard windows. // Can't focus the Steam Guard window directly. var steamLoginWindow = TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().Contains("Steam") && !wh.GetWindowText().Contains("-")); var steamGuardWindow = TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam Guard - ")); while (!steamLoginWindow.IsValid || !steamGuardWindow.IsValid) { Thread.Sleep(10); steamLoginWindow = TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().Contains("Steam") && !wh.GetWindowText().Contains("-")); steamGuardWindow = TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam Guard - ")); // Check for steam warning window. var steamWarningWindow = TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam - ")); if (steamWarningWindow.IsValid) { //Cancel the 2FA process since Steam connection is likely unavailable. return; } } Console.WriteLine("Found windows."); Process steamGuardProcess = null; // Wait for valid process to wait for input idle. Console.WriteLine("Waiting for it to be idle."); while (steamGuardProcess == null) { int procId = 0; GetWindowThreadProcessId(steamGuardWindow.RawPtr, out procId); // Wait for valid process id from handle. while (procId == 0) { Thread.Sleep(10); GetWindowThreadProcessId(steamGuardWindow.RawPtr, out procId); } try { steamGuardProcess = Process.GetProcessById(procId); } catch { steamGuardProcess = null; } } steamGuardProcess.WaitForInputIdle(); // Wait a bit for the window to fully initialize just in case. Thread.Sleep(2000); // Generate 2FA code, then send it to the client Console.WriteLine("It is idle now, typing code..."); SetForegroundWindow(steamLoginWindow.RawPtr); //SetActiveWindow(steamLoginWindow.RawPtr); Thread.Sleep(10); foreach (char c in Generate2FACode(decryptedAccounts[index].SharedSecret).ToCharArray()) { SetForegroundWindow(steamLoginWindow.RawPtr); //SetActiveWindow(steamLoginWindow.RawPtr); Thread.Sleep(10); // Can also send keys to login window handle, but nothing works unless it is the foreground window. System.Windows.Forms.SendKeys.SendWait(c.ToString()); //SendMessage(steamGuardWindow.RawPtr, WM_CHAR, c, IntPtr.Zero); //PostMessage(steamGuardWindow.RawPtr, WM_CHAR, (IntPtr)c, IntPtr.Zero); } SetForegroundWindow(steamLoginWindow.RawPtr); //SetActiveWindow(steamLoginWindow.RawPtr); Thread.Sleep(10); System.Windows.Forms.SendKeys.SendWait("{ENTER}"); //SendMessage(steamGuardWindow.RawPtr, WM_KEYDOWN, VK_RETURN, IntPtr.Zero); //PostMessage(steamGuardWindow.RawPtr, WM_KEYDOWN, (IntPtr)VK_RETURN, IntPtr.Zero); // Need a little pause here to more reliably check for popup later Thread.Sleep(3000); // Check if we still have a 2FA popup, which means the previous one failed. steamGuardWindow = TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam Guard - ")); if (tryCount < 2 && steamGuardWindow.IsValid) { Console.WriteLine("2FA code failed, retrying..."); Type2FA(index, tryCount + 1); } else if (tryCount == 2 && steamGuardWindow.IsValid) { MessageBoxResult result = MessageBox.Show("2FA Failed\nPlease wait or bring the Steam Guard\nwindow to the front before clicking OK", "Error", MessageBoxButton.OKCancel, MessageBoxImage.Error); if (result == MessageBoxResult.OK) { Type2FA(index, tryCount + 1); } } else if (tryCount == 3 && steamGuardWindow.IsValid) { MessageBox.Show("2FA Failed\nPlease verify your shared secret is correct!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
public static List <WindowHandle> GetWindows() { WindowHandle current = TopLevelWindowUtils.GetForegroundWindow(); return(TopLevelWindowUtils.FindWindows(wh => wh.IsValid && wh.IsVisible() && wh.RawPtr != current.RawPtr).ToList()); }
static public IEnumerable <WindowHandle> GetAllVisibleWindows() { return(TopLevelWindowUtils.FindWindows(w => (w.IsVisible() == true) && (w.GetWindowText() != ""), FindWindowSortType.SortByWinHandle)); }