Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Запуск *.exe в программе


Автор: UnixBeginner 23.1.2006, 21:53
У меня есть одно GUI, который должен передавать параметры другой небольшой консольной программе на выполнение. Затем после обработки эти данные необходимо вернуть обратно в GUI и отобразить.
Как это можно реализовать без использования WinAPI, ShellExecute, а например, стандартными способами, STL например или что еще?

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

Да и вообще реально ли это сделать?

Просто неохото вставлять ядро программы в GUI. Ведь так и не нужно делать!

Автор: Void 23.1.2006, 22:02
Цитата(UnixBeginner @ 23.1.2006, 23:53 Найти цитируемый пост)
Как это можно реализовать без использования WinAPI, ShellExecute, а например, стандартными способами, STL например или что еще?

Единственный более-менее реальный способ, укладывающийся в стандартную библиотеку — это вызвать программу с помощью system(), перенаправив ей вывод в файл и затем считать этот файл. Но это ужасно кривое решение.

Цитата(UnixBeginner @ 23.1.2006, 23:53 Найти цитируемый пост)
Правда мало просто вызвать программу, нужно передать ей параметры (указатели например, правда я не знаю, как можно будет в консольной программе присвоить значение адреса указателю, насколько я знаю это делать нельзя), а потом получить результат, например тоже указатели (может кто заодно подскажит что передавать).

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

Автор: Softaz 23.1.2006, 22:04
Цитата(UnixBeginner @ 23.1.2006, 21:53 Найти цитируемый пост)

Просто неохото вставлять ядро программы в GUI.

А может лучше библиотеку сделать?

Автор: Partizan 23.1.2006, 22:25
помоему уже был вопрос такой....

нужно использовать _popen();

Автор: UnixBeginner 24.1.2006, 10:17
Цитата(Softaz @ 23.1.2006, 22:04 Найти цитируемый пост)

А может лучше библиотеку сделать?

Может и лучше, но хочу чтобы EXE был.

Цитата(Void @ 23.1.2006, 22:02 Найти цитируемый пост)

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


А может есть какая-нибудь инфа по этому вопросу. Че-то я найти ничего стоящего не могу, например с примерами?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)