Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 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"));
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
 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)));
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 //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);
     }
 }
Ejemplo n.º 9
0
 /// <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");
     }
 }
Ejemplo n.º 10
0
 public static WindowHandle GetSteamWarningWindow()
 {
     return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam - ") || wh.GetWindowText().StartsWith("Steam — ")));
 }
Ejemplo n.º 11
0
 public static WindowHandle GetSteamGuardWindow()
 {
     return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam Guard")));
 }
Ejemplo n.º 12
0
 public static WindowHandle GetSteamLoginWindow()
 {
     return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().Contains("Steam") && !wh.GetWindowText().Contains("-") && !wh.GetWindowText().Contains("—") && wh.GetWindowText().Length > 5));
 }
Ejemplo n.º 13
0
 public void FindNotepad()
 {
     var window = TopLevelWindowUtils.FindWindow(w => w.GetWindowText().Contains("Notepad"));
 }
Ejemplo n.º 14
0
        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);
            }
        }
Ejemplo n.º 15
0
 private static WindowHandle GetMainSteamClientWindow()
 {
     return(TopLevelWindowUtils.FindWindow(wh =>
                                           wh.GetClassName().Equals("vguiPopupWindow") &&
                                           wh.GetWindowText().Equals("Steam")));
 }
Ejemplo n.º 16
0
        public static Taskbar GetPrimaryTaskbar()
        {
            var handle = TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Contains(PrimaryClassName));

            return(new Taskbar(handle));
        }