在C system()函数中隐藏控制台,Win

a0r*_*ega 13 c windows cmd system

我正在编写Dev-C++中的C程序,我需要使用几个Windows(CMD)命令.这很容易,但是当执行system()函数中的命令时,程序在执行中运行控制台.

一个例子:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

    int main()
    {
      system("if not exist c:\my_docs\doc.txt (xcopy /Y doc.txt c:\my_docs\)"); // Cmd command
      system("pause");
      return 0;
    }
Run Code Online (Sandbox Code Playgroud)

是否存在其他功能,或者没有显示控制台的修改?

谢谢!最好的祝福.

小智 17

你可以用WinExec("your cmd command", SW_HIDE);而不是system("cmd command").


Rol*_*ien 13

您可以使用CreateProcess执行此操作.

STARTUPINFOW si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

if (CreateProcessW(command, arg, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
{
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}
Run Code Online (Sandbox Code Playgroud)

  • 我在 *windows 7* 中尝试了您的代码,但它不起作用。我想执行 **adb shell am Broadcast -a NotifyServiceStart**。顺便说一下,我已经将 **adb** 添加到 **PATH** 中,并且 **system()** 可以很好地运行此行。 (2认同)