如何使用带最小化主窗口的CreateProcess启动控制台应用程序

时间:2010-12-07 19:06:17

标签: c++ windows winapi console-application

我有一个本机c ++ windows应用程序,它使用以下代码启动两个子进程 -

if (!CreateProcess(NULL, // No module name (use command line)
    cmdLine, // szCmdline, // Command line
    NULL, // Process handle not inheritable
    NULL, // Thread handle not inheritable
    false, // Set handle inheritance to FALSE
    CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS // Process Create Flags
    NULL, // Use parent's environment block
    NULL, // workingDir, // Use parent's starting directory
    &si, // Pointer to STARTUPINFO structure
    &pi) // Pointer to PROCESS_INFORMATION structure

使用STARTUPINFO块0中的所有参数。此代码在启动进程时工作正常。但是,我需要能够在最小化窗口的情况下启动Windows c ++控制台应用程序。

如果我将CREATE_NO_WINDOW添加到Process Create Flags,我可以启动没有任何窗口的进程。这是不可接受的。

在我的研究中,似乎没有办法强制控制台应用程序以最小化模式打开。这是对的吗?

是的,我知道我可以在他们自己的进程中最小化子应用程序窗口,但是,团队中的其他程序员不喜欢这样做。

1 个答案:

答案 0 :(得分:7)

您需要在STARTUPINFO结构中指定您希望控制台窗口最初最小化:

ZeroMemory(&si);
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_MINIMIZE;