在C++中启动进程时隐藏命令提示符

Hiding command prompt while starting a process in C++

本文关键字:隐藏 命令提示符 进程 启动 C++      更新时间:2023-10-16

我必须从C++代码开始一个进程。我正在使用CreateProcess()函数,并且在startupinfo结构中设置了以下标志。但命令提示符仍然出现,我必须手动关闭才能继续。请告诉我如何在进程启动期间隐藏此命令提示符。

si.cb = sizeof(STARTUPINFO);
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;

创建进程调用如下所示:

CreateProcess( NULL,   // No module name (use command line)
        exe,            // Command line
        NULL,           // Process handle not inheritable
        NULL,           // Thread handle not inheritable
        FALSE,          // Set handle inheritance to FALSE
        CREATE_NEW_CONSOLE,              // No creation flags
        NULL,           // Use parent's environment block
        NULL,           // Use parent's starting directory 
        &si,            // Pointer to STARTUPINFO structure
        &pi );

exe是包含要启动的进程名称的字符串。

请告诉我如何在进程启动期间隐藏此命令提示符。我试过这里描述的方法,但不起作用。我有一个Windows7系统。

谢谢,拉凯什。

正如MSchangers所说,CREATE_NEW_CONSOLE不是您想要的。但是您可能还想将CREATE_NO_WINDOW传递给CreateProcess函数。请参阅MSDN文档,了解可以作为标志传递给CreateProcess的内容。

您正在传递CREATE_NEW_CONSOLE,并且不想要新的控制台窗口。似乎答案是显而易见的。不过,如果另一个进程自己创建了一个控制台,那么你无法阻止它。如果你通过资源管理器启动该进程,会发生什么?