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

时间:2012-09-11 10:10:05

标签: c++ winapi

我必须从我的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是一个包含要开始的进程名称的字符串。

请告诉我如何在启动过程中隐藏此命令提示符。 我尝试了here描述的方法,但它不起作用。我有一个Windows 7系统。

谢谢, 勒凯什。

2 个答案:

答案 0 :(得分:1)

您正在传递CREATE_NEW_CONSOLE并且您不想要新的控制台窗口。似乎答案是完全明显的。但是,如果其他进程本身创建了一个控制台,那么你就无法阻止它。如果您通过资源管理器启动该过程会发生什么?

答案 1 :(得分:1)

正如MSalters所说,CREATE_NEW_CONSOLE不是你想要的。但您可能还想将CREATE_NO_WINDOW传递给CreateProcess函数。有关您可以传递给CreateProcess的标志,请参阅MSDN documentation