Ejemplo n.º 1
0
 public static WindowHandle GetSteamWarningWindow()
 {
     return(TopLevelWindowUtils.FindWindow(wh =>
                                           wh.GetClassName().Equals("vguiPopupWindow") &&
                                           (wh.GetWindowText().StartsWith("Steam - ") ||
                                            wh.GetWindowText().StartsWith("Steam — "))));
 }
Ejemplo n.º 2
0
        // 刷新列表
        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);
        }
Ejemplo n.º 3
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();
        }
        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.º 5
0
        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)
            }
        }
Ejemplo n.º 6
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.º 7
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.º 8
0
        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);
        }
Ejemplo n.º 9
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.º 10
0
        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());
            }
        }
Ejemplo n.º 11
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.º 12
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.º 13
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.º 14
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.º 15
0
        public static Taskbar GetPrimaryTaskbar()
        {
            var handle = TopLevelWindowUtils.FindWindow(wh => wh.GetClassName().Contains(PrimaryClassName));

            return(new Taskbar(handle));
        }
Ejemplo n.º 16
0
 public void FindNotepad()
 {
     var window = TopLevelWindowUtils.FindWindow(w => w.GetWindowText().Contains("Notepad"));
 }
Ejemplo n.º 17
0
        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());
        }
Ejemplo n.º 19
0
 private static WindowHandle GetMainSteamClientWindow()
 {
     return(TopLevelWindowUtils.FindWindow(wh =>
                                           wh.GetClassName().Equals("vguiPopupWindow") &&
                                           wh.GetWindowText().Equals("Steam")));
 }
Ejemplo n.º 20
0
 public static WindowHandle GetSteamGuardWindow()
 {
     return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam Guard")));
 }
Ejemplo n.º 21
0
 public static WindowHandle GetSteamWarningWindow()
 {
     return(TopLevelWindowUtils.FindWindow(wh => wh.GetWindowText().StartsWith("Steam - ") || wh.GetWindowText().StartsWith("Steam — ")));
 }
Ejemplo n.º 22
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.º 23
0
        public static List <WindowHandle> GetWindows()
        {
            WindowHandle current = TopLevelWindowUtils.GetForegroundWindow();

            return(TopLevelWindowUtils.FindWindows(wh => wh.IsValid && wh.IsVisible() && wh.RawPtr != current.RawPtr).ToList());
        }
Ejemplo n.º 24
0
 static public IEnumerable <WindowHandle> GetAllVisibleWindows()
 {
     return(TopLevelWindowUtils.FindWindows(w => (w.IsVisible() == true) && (w.GetWindowText() != ""), FindWindowSortType.SortByWinHandle));
 }