system () в c ++ без вызова cmd.exe - PullRequest
       9

system () в c ++ без вызова cmd.exe

1 голос
/ 06 октября 2010

как запустить систему (""), не показывая cmd.exe?

Я использую заголовок cstdlib код :: блоки 10,5

Я видел этот вопрос для c #, но я не знаю c #;)

Ответы [ 2 ]

6 голосов
/ 06 октября 2010

Полагаю, вам придется использовать CreateProcess .

1 голос
/ 11 марта 2017

Должен сказать, что существующий ответ не был особенно описательным. Вот способ выполнить команды без нового cmd.exe окна.

На основании ответа Ролана Рабьена и MSDN , я написал рабочую функцию:

int windows_system(const char *cmd)
{
  PROCESS_INFORMATION p_info;
  STARTUPINFO s_info;
  LPSTR cmdline, programpath;

  memset(&s_info, 0, sizeof(s_info));
  memset(&p_info, 0, sizeof(p_info));
  s_info.cb = sizeof(s_info);

  cmdline     = _tcsdup(TEXT(cmd));
  programpath = _tcsdup(TEXT(cmd));

  if (CreateProcess(programpath, cmdline, NULL, NULL, 0, 0, NULL, NULL, &s_info, &p_info))
  {
    WaitForSingleObject(p_info.hProcess, INFINITE);
    CloseHandle(p_info.hProcess);
    CloseHandle(p_info.hThread);
  }
}

Работает на всех платформах Windows. Звоните так же, как и вы system().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...