Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск приложений из работающего приложения 
:(
    Опции темы
grigorag
Дата 5.9.2008, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.1.2008

Репутация: нет
Всего: нет



Вобщем имеется приложение которое по истечению определенного времени должно запускать другое предложение(генератор), передавая ему параметр. Генератор выполнив свои действия, должен был бы известить приложение-родителя об удачном либо не удачном выполнении и передать управление.
Вопрос: можно ли это сделать стандартными средствами С++? Если да то краткий пример кода. Если нет то код желательно тоже...
PM MAIL   Вверх
mrbrooks
Дата 5.9.2008, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



ну если стандартными средствами то юзай функцию system()

Код

#include <process.h>
system("prg.exe -225"); //при условии что prg.exe - в той же папке шты и сама прога, иначе прописывай путь.


зы.
если через WinAPI то
CreateProcess();
ShellExecute();
ShellExecuteEx();
WinExec();
PM MAIL   Вверх
EnergoHokum
Дата 5.9.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Может, с целью максимальной переносимости, использовать семейство функций _exec из CRT?
PM MAIL ICQ   Вверх
Purple_Light
Дата 5.9.2008, 13:20 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 19.4.2007

Репутация: нет
Всего: нет



Стандартными средствами WinAPI это можно сделать следующим образом:
Код

/* Функция запускает приложение и ждет его завершения.
 * Возвращает TRUE если удалось запустить приложение и дождаться его завершенеия,
 * при этом app_exit_code содержит exit code приложения. Если функция вернула FALSE,
 * функция GetLastError() может быть использована, для получения кода ошибки.
 */
BOOL
start_application(LPTSTR app_name, DWORD *app_exit_code)
{
  STARTUPINFO si;                  /* см. MSDN */
  PROCESS_INFORMATION pi; /* см. MSDN */
  
  /* Инициализируем возвращаемое значение */
  app_exit_code = 1;

  /* Инициализиреум структуры (совсем забыл про них, ай-ай-ай!) */
  memset(&si, 0, sizeof(si));
  memset(&pi, 0, sizeof(pi));

  /* Запускаем приложение */
  if (!CreateProcess(NULL,
             appname,
             NULL,
             NULL,
             TRUE,
             0,
             NULL,
             NULL,
             &si,
             &pi))
    return FALSE;
  
  CloseHandle(pi.hThread);

  /* Ждем завершения приложения */
  if (!WaitForSingleObject(pi.hProcess,
                          INFINITE) != WAIT_OBJECT_0)
    /* Приложение завершилось с ошибкой 
     * (приложение вернуло отличное от 0 значение).
     * Получаем возвращаемое число.
     */
      GetExitCodeProcess(pi.hProcess, app_exit_code);

  CloseHandle(pi.hProcess);
  return TRUE;
}


Это сообщение отредактировал(а) Purple_Light - 5.9.2008, 13:57
PM MAIL   Вверх
powerfox
Дата 7.9.2008, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Цитата(mrbrooks @  5.9.2008,  08:47 Найти цитируемый пост)
#include <process.h>

лучше использовать stdlib.h

Цитата(mrbrooks @  5.9.2008,  08:47 Найти цитируемый пост)
system("prg.exe -225"); //при условии что prg.exe - в той же папке шты и сама прога, иначе прописывай путь.

Код

//генератор использует exit status (return 0/1/...), чтобы сообщить о результате
//числовой параметр можно заранее преобразовать в строку
int res = system("prg.exe -225");



--------------------
user posted image
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.