using System; using System.Diagnostics; using System.Drawing; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public struct Rect { public int Left { get; set; } public int Top { get; set; } public int Right { get; set; } public int Bottom { get; set; } } public Form1() { doCommands(); this.WindowState = FormWindowState.Minimized; } private static void doCommands() { // Get application's directory string path = System.IO.Path.GetDirectoryName( System.Windows.Forms.Application.ExecutablePath); // launch WS4000v4.exe from application directory Process p = Process.Start(path + "\\WS4000v4.exe"); p.WaitForInputIdle(); // Get handle for the WS4000 Sim process. // Iterating through every process is required unless we know // the exact Window title, which can change per version. IntPtr hWnd = IntPtr.Zero; foreach (Process pList in Process.GetProcesses()) { if (pList.MainWindowTitle.Contains("WS4000 Simulator Public Beta")) { hWnd = pList.MainWindowHandle; } } // Get the screen position of WS4000 Rect WSRect = new Rect(); GetWindowRect(hWnd, ref WSRect); // Bring WS4000 to the front SetForegroundWindow(hWnd); // Send the "F8" key to the application 10 times. for (int i = 0; i<10; i++) { SendKeys.SendWait("F8"); Thread.Sleep(250); i++; } Thread.Sleep(1000); /* MouseHook.cs: https://pastebin.com/k3HfUeA7 */ // Move the cursor to the "Simulator" menu. MouseHook.MoveMouse(new Point(WSRect.Left + 100, WSRect.Top + 60)); Thread.Sleep(250); // Click the "Simulator" menu, opening it MouseHook.SendClick(); Thread.Sleep(250); // Move cursor down a bit, to the "Start Simulation" option MouseHook.MoveMouse(new Point(WSRect.Left + 100, WSRect.Top + 80)); Thread.Sleep(250); // Click it MouseHook.SendClick(); Thread.Sleep(250); // Close this application Environment.Exit(0); } [DllImport("User32.dll")] static extern int SetForegroundWindow(IntPtr point); [DllImport("user32.dll")] public static extern bool GetWindowRect(IntPtr hwnd, ref Rect rectangle); } }