как заставить приложение на C запустить другое приложение без консоли?

Тема в разделе "WASM.HEAP", создана пользователем device, 21 ноя 2007.

  1. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Мне надо:
    Код (Text):
    1. int main(){
    2.  
    3. system("my_program");
    4.  
    5. return 0;
    6.  
    7. }
    Чтоб по клику мышей по значку этого приложения запускалось то, которое указано в system().

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

    Почему?
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    device
    Если под win, то
    Код (Text):
    1. ...
    2.     STARTUPINFO si;
    3.     PROCESS_INFORMATION pi;
    4.  
    5.     ZeroMemory(&si, sizeof(si));
    6.     ZeroMemory(&pi, sizeof(pi));
    7.  
    8.     si.cb = sizeof(si);
    9.     si.dwFlags = STARTF_USESHOWWINDOW;
    10.     si.wShowWindow = SW_HIDE;
    11.  
    12.     if (CreateProcess(NULL, lpCmdLine, NULL, NULL,
    13.            FALSE, 0, NULL, NULL, &si, &pi))
    14.     {
    15. //      WaitForSingleObject(pi.hProcess, INFINITE);
    16.  
    17.       CloseHandle(pi.hProcess);
    18.       CloseHandle(pi.hThread);
    19.  
    20.       return 0;
    21.     }
    22. ...
     
  3. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    device
    Почему, сразу, не запускается?! Может запускается и закрывается. Поробуй вставить wait какой-нибудь.
     
  4. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    twgt
    В отладчике - запуск в три такта. Сначала INIT, потом грузит кучу библиотек, потом - запуск внешней проги, потом - закрытие.

    И убивает порожденный процесс???
     
  5. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    device
    ShellExecute ?
     
  6. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Скорее всего system не меняет директорию на текущую. Т.е. надо попробовать передать полный путь к my_program
     
  7. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    twgt
    фточку!
    Исправил. Работает.