我正在尝试使用 CreateProcess(...) 运行一个进程,并在单独的控制台窗口中独立运行它。
我可以使用 system("...") 函数来实现这一点,但我更喜欢 CreateProcess,因为它使我可以指定环境和工作目录,获取进程的句柄,以及在需要时通过管道传输 stdin/out到。
我在互联网上找到的只是相反的问题,即人们拥有额外的控制台窗口并希望摆脱它们!打开并显示新的控制台窗口似乎是早期版本的 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
程序运行,我可以从管道读取输出。还是没有窗户。