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

Discussion in 'WASM.WIN32' started by pikador, Dec 4, 2008.

  1. pikador

    pikador New Member

    Blog Posts:
    0
    Joined:
    Apr 2, 2007
    Messages:
    101
    Подскажите WinAPI позволяющую выполнять CMDшные команды....
     
  2. Booster

    Booster New Member

    Blog Posts:
    0
    Joined:
    Nov 26, 2004
    Messages:
    4,860
    Впервые о такой слышу.
     
  3. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    Не слышал о CMD.EXE ? :))
     
  4. q_q

    q_q New Member

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    pikador
    CreateProcess с невидимым окном?
    Code (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 Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    А ShellExecute не нравится ?
     
  6. Booster

    Booster New Member

    Blog Posts:
    0
    Joined:
    Nov 26, 2004
    Messages:
    4,860
    Partner
    Это API?
     
  7. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    Это шутка :)
     
  8. Booster

    Booster New Member

    Blog Posts:
    0
    Joined:
    Nov 26, 2004
    Messages:
    4,860
    Partner
    Смешно.
     
  9. pikador

    pikador New Member

    Blog Posts:
    0
    Joined:
    Apr 2, 2007
    Messages:
    101
    q_q, Partner
    Пасибо, то что нужно.
     
  10. q_q

    q_q New Member

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

    dendi New Member

    Blog Posts:
    0
    Joined:
    Sep 3, 2007
    Messages:
    233
    использование слова INFINITE моветон
     
  12. q_q

    q_q New Member

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    dendi
    Imho в данном случае моветон это - твоя придирка к закомментированному коду, основная задача которого, продемонстрировать, что существует возможность наблюдать, за завершением процесса.

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

    Osen Рие

    Blog Posts:
    0
    Joined:
    Apr 5, 2008
    Messages:
    283
    Location:
    Париж
    pikador
    В функции CreateProcess есть параметр CommandLine, это как раз то что нужно вам.
     
  14. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    ShellExecuteEx позволяет все вышеперечисленное и даже больше.
     
  15. Osen

    Osen Рие

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

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    Структура SHELLEXECUTEINFO имеет поле hProcess куда можно получить handle созданного процесса.
     
  17. q_q

    q_q New Member

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    Partner
    > даже больше
    "Учись матчасть" (С) клерк(кристалик)
     
  18. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    Где я неправ ? Покажи пальцем.
     
  19. q_q

    q_q New Member

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    Partner
    Я не согласен с "даже больше".
     
  20. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    Я нигде не говорил что ShellExecuteEx может все, что может CreateProcess.

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

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