Какая WinAPI выполняет cmd...

Тема в разделе "WASM.WIN32", создана пользователем pikador, 4 дек 2008.

  1. pikador

    pikador New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2007
    Сообщения:
    101
    Подскажите WinAPI позволяющую выполнять CMDшные команды....
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Впервые о такой слышу.
     
  3. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Не слышал о CMD.EXE ? :))
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    pikador
    CreateProcess с невидимым окном?
    Код (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. ...
     
  5. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    А ShellExecute не нравится ?
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Partner
    Это API?
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Это шутка :)
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Partner
    Смешно.
     
  9. pikador

    pikador New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2007
    Сообщения:
    101
    q_q, Partner
    Пасибо, то что нужно.
     
  10. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Partner
    > А ShellExecute не нравится ?
    Предпочитаю CreateProcess , потому что:
    1) в STARTUPINFO можно настроить не только видимость окна;
    2) могу наблюдать за ("контролировать") завершением процесса - WaitForSingleObject.
     
  11. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    использование слова INFINITE моветон
     
  12. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    dendi
    Imho в данном случае моветон это - твоя придирка к закомментированному коду, основная задача которого, продемонстрировать, что существует возможность наблюдать, за завершением процесса.

    Целью моего сообщения было показать направление, в котором думать, а не давать готовое решение.
     
  13. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    pikador
    В функции CreateProcess есть параметр CommandLine, это как раз то что нужно вам.
     
  14. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    ShellExecuteEx позволяет все вышеперечисленное и даже больше.
     
  15. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Partner
    Она позволяет кое-что еще (запуск программ, которые ассоциированны с файлами), но кое что она и не умеет (расширенные флаги создания процесса отстутствуют). Управлять процессом после его создания нельзя.
     
  16. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Структура SHELLEXECUTEINFO имеет поле hProcess куда можно получить handle созданного процесса.
     
  17. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Partner
    > даже больше
    "Учись матчасть" (С) клерк(кристалик)
     
  18. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Где я неправ ? Покажи пальцем.
     
  19. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Partner
    Я не согласен с "даже больше".
     
  20. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Я нигде не говорил что ShellExecuteEx может все, что может CreateProcess.

    Ты привел всего два пункта, по которых ты предпрочитаешь CreateProcess.
    ShellExecuteEx может все, перечисленное тобой. Ты сомневаешся что она может больше ?
    Можно ли с помощью CreateProcess :
    1. Задать иконку для приложения.
    2. Выбрать монитор на котором запускать в системе с несколькими мониторами.
    3. Запустить ассоциированое приложение для файла.
    4. Ассоциировать хоткей с запущенным приложением.

    И это еще не все...