我正在尝试使用 CreateProcess(...) 运行一个进程并在单独的控制台窗口中独立运行它。
我可以使用 system("...") 函数来实现这一点,但我更喜欢 CreateProcess,因为它让我可以指定环境和工作目录、获取进程的句柄以及在需要时通过管道传输标准输入/输出至。
我在互联网上找到的只是逆问题,即人们拥有额外的控制台窗口并想要摆脱它们!在早期版本的 Windows 中,打开并显示新的控制台窗口似乎是正常行为?
现在,即使我运行“cmd.exe /c ...”,我也无法获得额外的窗口
我尝试使用 STARTF_USESHOWWINDOW 标志,但没有成功。
有人遇到过这个问题吗?
PS .:显示GUI窗口,例如。notepad.exe 会正常出现。
这是我的代码(本质上)
PROCESS_INFORMATION processInfo;
STARTUPINFOA startupInfo;
ZeroMemory(&startupInfo,sizeof(startupInfo));
startupInfo.dwFlags |= CREATE_NEW_CONSOLE;
startupInfo.dwFlags |= DETACHED_PROCESS;
ok&=CreateProcessA( NULL,
const_cast<char*>(comand.c_str()), // safe for CreateProcessA
NULL, NULL, TRUE, NULL, NULL, NULL,
&startupInfo, &processInfo);
我正在尝试运行 C:/Windows/system32/cmd.exe /c help 程序运行,我可以从管道读取输出。还是没有窗户。