Как запустить файл C ++ .exe из C #? - PullRequest
2 голосов
/ 20 октября 2011

Я начну с приложения C ++, чтобы объяснить мои точные требования. У меня было приложение C ++, которое получает ввод (небольшая команда «run») с консоли (клавиатуры) без использования каких-либо аргументов (приложение C ++ использует getchar () в проекте). проблема в том, что я могу запустить exe-файл из C # с помощью System.Diagnostics.Process, но я хочу программно ввести команду «выполнить» в C # для запуска приложения C ++. Возможно ли это сделать?

Ответы [ 2 ]

3 голосов
/ 20 октября 2011

Да, это так.Вам нужно перенаправить поток ввода порожденного процесса, чтобы вы могли писать в него напрямую:

var proc = new Process();

proc.StartInfo.FileName = "program.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;

proc.Start();
var sw = proc.StandardInput;

Теперь это запишет в стандартный ввод вашего процесса, как если бы вы набрали текст с клавиатуры:

sw.WriteLine("run something");

Наконец, когда вы закончите писать, не забудьте очистить:

sw.Close();
proc.WaitForExit();
proc.Close();
0 голосов
/ 20 октября 2011
    // Use ProcessStartInfo class
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.CreateNoWindow = false;
    startInfo.UseShellExecute = false;
    startInfo.FileName = "run.exe";
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    startInfo.Arguments = "-f j ";

    try
    {
        using (Process exeProcess = Process.Start(startInfo))
        {
        exeProcess.WaitForExit();
        }
    }
    catch
    {
        // Log error.
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...