0

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

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

谢谢,拉克什。

4

2 回答 2

1

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

于 2012-09-11T10:49:45.303 回答
1

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

于 2012-09-11T11:03:02.643 回答