2012-05-30 2 views
0

Приложение .exe необходимо открыть в окне консоли. Затем я должен ввести имя .txt в консольном приложении для его чтения. Как я могу выполнить все это в своем коде сразу?
Я использовал, чтобы быть в состоянии запустить его (и не делает его читать .txt) с system("name.exe"), но вдруг он дает,Как я могу запустить файл .exe через C++?

error: input "name.exe" is not a valid windows application

+2

Вы проверили путь '' name.exe '' при открытии с помощью 'system()' function? – iammilind

+0

Вы можете запустить 'name.exe' самостоятельно вне вашей другой программы? –

+0

Похоже, что это еще не на вашем [пути] (http://www.computerhope.com/issues/ch000549.htm) - см. Эту ссылку и убедитесь, что 'name.exe' находится в каталоге в пути. –

ответ

0

Вы можете сделать ваше приложение прочитать имя файла в качестве параметра командной строки, то вы можете запустить свое приложение с помощью системы («name.exe name.txt»).

+0

Я не могу изменить приложение. Он получает только два .txt-файла в качестве ввода (пользователь должен ввести имя каждого .txt-файла и нажать Enter, чтобы запустить это приложение). Я хочу, чтобы все это было выполнено, как только я вызываю приложение через свой код на C++. (известно имя .txt-файлов) – Demian

0

1- type "name.txt" 2- press enter 3- type name2.exe 4- Press enter. How can I do that through my c++ code?

std::string appName, fileName 
std::cin >> appName >> fileName; 
system(std::string(appName + " " + filename).c_str()) 

Если имена содержат пробелы, то, возможно, придется использовать getline читать их вместо >>.

--EDIT--

Basically I want once my application is called the input is also automatically given to it.

Creating Child process with redirected input (msdn)

_popen documentation(msdn)

pipe to subprocess (GNU)

+0

Это не сработало. В принципе, я хочу, чтобы после того, как мое приложение получило название, он также автоматически присваивается ему. после того, как приложение будет вызвано, он попросит «набрать имя вашего первого файла и нажать« ввести », и как только это будет сделано, он спросит:« Введите имя второго файла и нажмите enter ». – Demian

0

В Windows использовать CreateProcess API, чтобы сделать это - http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx. Не использовать system.

+0

Отсутствует, почему бы не использовать систему: поведение и возвращаемое значение системы зависят от платформы. При этом API-интерфейс CreateProcess должен быть завернут, если код должен быть независимым от платформы. – Alex

Смежные вопросы