Как вставить параметры после запуска EXE-файла C # - PullRequest
0 голосов
/ 19 мая 2019

Как я могу вставить параметры в файл EXE после того, как он выполняется с использованием кода, а не вручную?

Я пытался вставить в аргументы Process.StartInfo.Arguments внутри аргументов, но ничего не получилось.Пытался заглянуть на сайт и не нашел что-то полезное.

[P1.StartInfo.WorkingDirectory = @"D:\try";
            P1.StartInfo.FileName = "CMD.exe";
            P1.StartInfo.Arguments = "/k cmbs_tcx.exe -han";
            P1.StartInfo.UseShellExecute = true;
            P1.StartInfo.CreateNoWindow = true;
            P2.StartInfo.WorkingDirectory = P1.StartInfo.WorkingDirectory;
            P2.StartInfo.FileName = P1.StartInfo.FileName;
            P2.StartInfo.Arguments = "/k han_client.exe 127.0.0.1 & 1 6 0 2 1 3 0 0 0 1 1 32534 1 4 0 2 0 2";
            P2.StartInfo.UseShellExecute = true;
            P2.StartInfo.CreateNoWindow = true;
            P1.Start();
            P2.Start();][1]

Я с нетерпением жду запуска EXE после получения последних аргументов.Ссылка содержит изображения, которые описывают то, что вы видите после открытия файла, и я хочу дать параметры для активации меню.

enter image description here

enter image description here

1 Ответ

0 голосов
/ 19 мая 2019

Чтобы передать ваши параметры в качестве аргументов командной строки, целевое приложение должно явно поддерживать это и анализировать свою командную строку - я думаю, что это не так.

Если вам повезет,приложение использует стандартный ввод для чтения значений - если это так, все, что вам нужно сделать, это установить P2.StartInfo.RedirectStandardInput = true перед запуском, а затем записать свои значения в программу, используя P2.StandardInput.WriteLine.

Если вы меньше, чемк счастью, и приложение использует другой способ чтения ввода с клавиатуры, вам нужно вывести окно на передний план, используя:

[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);

, передав ему значение P2.Handle после запуска приложения, и затем используйтеSendKeys.Send или SendKeys.SendWait для отправки на него нажатий клавиш.Однако я не рекомендовал бы использовать его в любом виде производственного кода.

...