Запустите C ++ exe из C # формы с помощью Process.start()

StackOverflow https://stackoverflow.com/questions/2526481

  •  22-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать приложение C # form, которое позволит мне использовать все мои предыдущие программы на C ++ из одной центральной программы.

Я могу открыть бывшие с помощью Process.Start(), однако он неправильно компилирует код.

Пример кода:

Process.Start("C:\\\Documents and Settings\\\dan\\\Desktop\\\test.exe");

Это вызовет консоль и будет действовать так, как будто она запущена, но она работает не так, как при обычной компиляции из редактора C ++.Существует ли startinfo переменная, которую мне нужно установить, чтобы указать, что это программа на C ++ или что-то в этом роде?

Кроме того, есть ли какой-либо способ выполнить программу на C ++ с использованием process.start это позволит мне передавать it-переменные через командную строку через argc и argv?

Спасибо

Это было полезно?

Решение

Есть только пара отличий при использовании Process .Начните так, как вы делали, в отличие откогда вы просто выполняете программу напрямую.И то, и другое может быть устранено с помощью Информация о запуске процесса.

  1. В Рабочий каталог уже не будет прежним.Установите это значение в путь, содержащий исполняемый файл, чтобы получить такое же поведение.
  2. Установить Используйте ShellExecute имеет значение true, поэтому для выполнения процесса используется оболочка Windows.

Что касается добавления аргументов командной строки:Вы можете сделать это с помощью ProcessStartInfo.Аргументы.Однако оно не должно быть обязательным из-за того, что это приложение на C ++.

Другие советы

Пока информации достаточно только для того, чтобы ответить на ваш последний вопрос.Да, вы можете включить аргументы командной строки как показано здесь.Посмотрите на раздел под названием "=== Программа, которая запускает EXE (C #) ===".

Чтобы добавить аргументы командной строки:

Process process = new Process();
process.StartInfo.FileName = "C:\\Documents and Settings\\dan\\Desktop\\test.exe";
process.StartInfo.Arguments = ""; // Put your arguments here
process.Start();

После того, как программа была скомпилирована в EXE, не должно иметь значения, на каком языке она была написана.

Что касается аргументов программы, вам нужно взглянуть на класс ProcessStartInfo и переопределение Process.Start(), который его использует: Процесс.Запуск (ProcessStartInfo)

Я столкнулся с аналогичной проблемой в python, вы ожидаете подробного вывода?

В моем случае выходной буфер был заполнен, и, следовательно, выполнение остановилось.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top