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 static WindowHandle GetSteamWarningWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Equals("vguiPopupWindow") && (wh.GetWindowText().StartsWith("Steam - ") || wh.GetWindowText().StartsWith("Steam — ")))); }
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")); }
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 GetSteamLoginWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Equals("vguiPopupWindow") && (wh.GetWindowText().Contains("Steam") && !wh.GetWindowText().Contains("-") && !wh.GetWindowText().Contains("—") && wh.GetWindowText().Length > 5))); }
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 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 GetSteamWarningWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam - ") || wh.GetWindowText().StartsWith("Steam — "))); }
public static WindowHandle GetSteamGuardWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam Guard"))); }
public static WindowHandle GetSteamLoginWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().Contains("Steam") && !wh.GetWindowText().Contains("-") && !wh.GetWindowText().Contains("—") && wh.GetWindowText().Length > 5)); }
public void FindNotepad() { var window = TopLevelWindowUtils.FindWindow(w => w.GetWindowText().Contains("Notepad")); }
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); } }
private static WindowHandle GetMainSteamClientWindow() { return(TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Equals("vguiPopupWindow") && wh.GetWindowText().Equals("Steam"))); }
public static Taskbar GetPrimaryTaskbar() { var handle = TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Contains(PrimaryClassName)); return(new Taskbar(handle)); }