bool StartGame()
        {
            if (!File.Exists(GamePath))
            {
                MessageBox.Show(EnglishText.HelpMessage_GameNotFoundHelpMessage);
                return(false);
            }
            try
            {
                GameRunTime           = new Process();
                GameRunTime.StartInfo = new ProcessStartInfo()
                {
                    FileName         = GamePath,
                    WorkingDirectory = Path.GetDirectoryName(GamePath),
                    Arguments        = StartOptionsRunArgs
                };
                GameRunTime.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show($"{EnglishText.HelpMessage_GameLaunchErrorHelpMessage}\n{ex}");
                return(false);
            }

            if (RuntimeProcess != null && RuntimeProcess != "")
            {
                Task FindGameTask = Task.Run(() => {
                    GameRunTime = null;
                    while (GameRunTime == null)
                    {
                        GameRunTime = Process.GetProcesses().FirstOrDefault(P => P.MainWindowHandle != IntPtr.Zero && P.ProcessName.ToLower() == RuntimeProcess);
                    }
                    while (!GameRunTime.Responding)
                    {
                        ;
                    }
                });
                TimeSpan TimeoutSpan = TimeSpan.FromMilliseconds(1000);
                FindGameTask.Wait(TimeoutSpan);
            }

            WindowHandleInfo Window = new WindowHandleInfo(GameRunTime.MainWindowHandle);

            Task InputTask = new Task(() => {
                if (StartOptionsInput != null && StartOptionsInput != "")
                {
                    Thread.Sleep(50);
                    Action[] Commands = TaPa_XYCyl.GetCommands(StartOptionsInput, Window);
                    foreach (Action Command in Commands)
                    {
                        Command.Invoke();
                    }
                }
            });

            Window.SetForegroundWindow();

            InputTask.Start();
            return(true);
        }
Esempio n. 2
0
        static string GetWindowModuleFileName(IntPtr hWnd)
        {
            uint          processId = 0;
            const int     nChars    = 1024;
            StringBuilder filename  = new StringBuilder(nChars);

            GetWindowThreadProcessId(hWnd, out processId);


            IntPtr hProcess = OpenProcess(1040, 0, processId);

            GetModuleFileNameEx(hProcess, IntPtr.Zero, filename, nChars);
            CloseHandle(hProcess);

            if (filename.ToString().ToLower().Contains("applicationframehost"))
            {
                var allChildWindows = new WindowHandleInfo(hWnd).GetAllChildHandles();
                foreach (IntPtr hwnd_child in allChildWindows)
                {
                    uint child_processId = 0;
                    GetWindowThreadProcessId(hwnd_child, out child_processId);
                    if (child_processId != processId)
                    {
                        return(GetWindowModuleFileName(hwnd_child));
                    }
                }
            }
            return(filename.ToString().ToLower());
        }
Esempio n. 3
0
        public static async Task SendMessage(string ipcName, int ipcId, string command)
        {
            var wh = new WindowHandleInfo(IntPtr.Zero);
            var targetWindowHandles = wh.GetAllChildHandles()
                                      .Select(
                childWindow =>
            {
                try
                {
                    var prop = User32.GetProp(childWindow, ipcName).ToInt32();
                    if (prop == ipcId)
                    {
                        return(childWindow);
                    }
                }
                catch (Exception)
                {
                    // ignored
                }

                return(IntPtr.Zero);
            })
                                      .Where(x => x != IntPtr.Zero)
                                      .Distinct()
                                      .ToList();

            var cds = new User32.COPYDATASTRUCT
            {
                dwData = new IntPtr(ipcId),
                cbData = command.Length,
                lpData = command
            };

            if (targetWindowHandles.Count > 0)
            {
                await Task.WhenAll(
                    targetWindowHandles.Select(
                        target => Task.Run(
                            () =>
                {
                    User32.SendMessage(target, User32.WM_COPYDATA, IntPtr.Zero, ref cds);

                    var lastError = Marshal.GetLastWin32Error();
                    if (lastError != 0)
                    {
                        using (var eventLog = new EventLog("Application"))
                        {
                            // TODO: "Application" / "Application Error" can be used without admin privileges, if we want our own source, it needs to be registered under Admin rights.
                            eventLog.Source = "Application Error";
                            eventLog.WriteEntry("WIN32 error while sending message from Ridder.PhoneHelper.App.exe: " + lastError, EventLogEntryType.Error, lastError, 0);
                        }
                    }
                })));
            }
        }
Esempio n. 4
0
        public void WindowEval()
        {
            WindowHandleInfo childWindows = new WindowHandleInfo(GetForegroundWindow());


            foreach (Process i in Process.GetProcessesByName("T"))
            {
                StringBuilder className = new StringBuilder(255);
                //Form1.RichTextBox1.AppendText("Main Window: " & Form2.GetActiveWindowTitle(i.MainWindowHandle) & " Class: " & Form2.GetClassName(i.MainWindowHandle, className, className.Capacity).ToString & "  " & vbCrLf)

                if (GetChildWindows(i.MainWindowHandle).Count() > 1)
                {
                    StringBuilder wTitle = new StringBuilder(255);
                    GetClassName(GetChildWindows(i.MainWindowHandle)[1], wTitle, wTitle.Capacity);
                    // Form1.RichTextBox1.AppendText("Handle: " & GetChildWindows(i.MainWindowHandle)(1).ToString & " ")
                    //Form1.RichTextBox1.AppendText("First Child Window: " & Form2.GetActiveWindowTitle(GetChildWindows(i.MainWindowHandle)(1)) & " Classname: " & wTitle.ToString & vbCrLf)

                    if (i.MainWindowHandle != IntPtr.Zero)
                    {
                        WINDOWPLACEMENT placement = new WINDOWPLACEMENT();
                        GetWindowPlacement(i.MainWindowHandle, ref placement);
                        switch (placement.showCmd)
                        {
                        case 1:
                            // TODO: might not be correct. Was : Exit Select

                            break;

                        case 2:
                            break;

                        case 3:

                            //HideBar(ref Form1.showFlag);
                            break;     // TODO: might not be correct. Was : Exit Select
                        }
                    }
                    if (GetActiveWindowTitle(GetChildWindows(i.MainWindowHandle)[1]).Contains("Review Patient's Orders"))
                    {
                        ShowBar(ref showFlag);
                    }
                    else if (GetActiveWindowTitle(GetChildWindows(i.MainWindowHandle)[1]).Contains("Rounding List"))
                    {
                        HideBar(ref showFlag);
                    }
                }

                //For Each k As IntPtr In GetChildWindows(i.MainWindowHandle)
                //    Dim wTitle As New StringBuilder(255)
                //    Form2.GetClassName(k, wTitle, wTitle.Capacity)
                //    Form1.RichTextBox1.AppendText("Handle: " & k.ToString & " ")
                //    Form1.RichTextBox1.AppendText("Name: " & Form2.GetActiveWindowTitle(k) & " Classname: " & wTitle.ToString & vbCrLf)
                //Next
            }
        }
Esempio n. 5
0
        private void Win_Click(object sender, RoutedEventArgs e)
        {
            //Process[] p = Process.GetProcesses();
            //Process fs = null;
            //foreach(var pr in p)
            //{
            //    Console.WriteLine(pr.ProcessName);
            //    if(pr.ProcessName == "FlightSimulator")
            //    {
            //        Console.WriteLine(pr.Handle.ToString("X"));
            //        IntPtr child2 = Helpers.FindWindowEx2(pr.Handle, IntPtr.Zero, "AceApp", "$AS1000_PFD_1");
            //    }
            //}
            // return;

            IntPtr parent = IntPtr.Zero;

            foreach (var p in Process.GetProcesses())
            {
                if (p.ProcessName.Contains("Simu"))
                {
                    Console.WriteLine(p.ProcessName);
                    parent = p.Handle;
                }
            }

            //IntPtr parent = Helpers.FindWindowA("Microsoft Flight Simulator - 1.16.2.0");
            //IntPtr parent = Helpers.FindWindowA("Microsoft Flight Simulator");
            //Console.WriteLine(parent.ToString("X"));

            WindowHandleInfo hi = new WindowHandleInfo(parent);
            var list            = hi.GetAllChildHandles();

            foreach (var w in list)
            {
                Console.WriteLine($"{w.ToString()},  {w.ToString("X")}");

                Rect size = hi.GetPos(w);
                //{ 319,479,1024,1024}
                //hi.SetPos(w, 0, 0, 600, 400);
                if (size.Left == 319 && size.Width == 1024)
                {
                    //hi.SetPos((IntPtr)w, 400, 400, 800, 800);
                }
            }
        }
Esempio n. 6
0
            public void WindowEval(object state)
            {
                WindowHandleInfo childWindows = new WindowHandleInfo(GetForegroundWindow());

                foreach (Process i in Process.GetProcessesByName("T"))
                {
                    StringBuilder className = new StringBuilder(255);
                    //Form1.RichTextBox1.AppendText("Main Window: " & Form2.GetActiveWindowTitle(i.MainWindowHandle) & " Class: " & Form2.GetClassName(i.MainWindowHandle, className, className.Capacity).ToString & "  " & vbCrLf)

                    if (GetChildWindows(i.MainWindowHandle).Count() > 1)
                    {
                        StringBuilder wTitle = new StringBuilder(255);
                        GetClassName(GetChildWindows(i.MainWindowHandle)[1], wTitle, wTitle.Capacity);
                        // Form1.RichTextBox1.AppendText("Handle: " & GetChildWindows(i.MainWindowHandle)(1).ToString & " ")
                        //Form1.RichTextBox1.AppendText("First Child Window: " & Form2.GetActiveWindowTitle(GetChildWindows(i.MainWindowHandle)(1)) & " Classname: " & wTitle.ToString & vbCrLf)

                        if (i.MainWindowHandle != IntPtr.Zero)
                        {
                            WINDOWPLACEMENT placement = new WINDOWPLACEMENT();
                            GetWindowPlacement(i.MainWindowHandle, ref placement);
                            switch (placement.showCmd)
                            {
                            case 1:     //Normal
                                break;

                            case 2:     //Minimized
                                break;

                            case 3:     //Maximized
                                HideBar(ref showFlag);
                                break;
                            }
                        }
                        if (GetActiveWindowTitle(GetChildWindows(i.MainWindowHandle)[1]).Contains("Review Patient's Orders"))
                        {
                            ShowBar(ref showFlag);
                        }
                        else if (GetActiveWindowTitle(GetChildWindows(i.MainWindowHandle)[1]).Contains("Rounding List") || GetActiveWindowTitle(GetChildWindows(i.MainWindowHandle)[1]).Contains("Physician Desktop"))
                        {
                            HideBar(ref showFlag);
                        }
                    }
                }
            }
Esempio n. 7
0
        public List <IntPtr> GetChildWindows(IntPtr handle)
        {
            var allChildWindows = new WindowHandleInfo(windowHandle).GetAllChildHandles();

            return(allChildWindows);
        }
Esempio n. 8
0
    ProcessSummary[] GetTabs(Process proc)
    {
        var allChildWindows = new WindowHandleInfo(proc.MainWindowHandle).GetAllChildHandles();

        return proc.
    }