Suppress console when calling “system” in C++

前端 未结 5 1735
灰色年华
灰色年华 2020-12-17 16:57

I\'m using the system command in C++ to call some external program, and whenever I use it, a console window opens and closes after the command finishes.

5条回答
  •  醉话见心
    2020-12-17 17:14

    Here's a way to execute commands without a new cmd.exe window. Based on Roland Rabien's answer and MSDN, I've written a working function:

    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);
      }
    }
    

    Works on all Windows platforms. Call just like you would system().

提交回复
热议问题