gpt4 book ai didi

c++ - 如何在不显示 Win32 GUI 程序的控制台窗口的情况下执行子控制台程序?

转载 作者:可可西里 更新时间:2023-11-01 12:38:09 27 4
gpt4 key购买 nike

(我搜索了 SO 答案,但没有找到明确的解决方案。)

我正在开发 MFC GUI 程序。该程序运行各种子程序,包括控制台程序和shell命令脚本(.cmd)。

最初它显示一个 GUI 窗口和一个控制台窗口(使用 AllocConsole 创建),因为子进程有很多控制台输出。但是很多用户提示控制台窗口,所以我们决定隐藏控制台窗口。

首先尝试如下:

if (AllocConsole())
{
::ShowWindow(::GetConsoleWindow(), SW_HIDE);
}

好的,没有控制台窗口,但在控制台创建时有可见的闪烁。我已经尝试了几个 CreateProcess 选项来创建子进程,以完全阻止控制台窗口的显示,但总之失败了,我认为这实际上是不可能的。

这没什么大不了的。我们可以忽略启动时的临时窗口闪烁。

但是真的不能完全隐藏子控制台窗口吗?

最佳答案

像这样为 CreateProcess 调用设置 STARTUPINFO:

    STARTUPINFO si = { 0 };
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
si.wShowWindow = SW_HIDE;

关于c++ - 如何在不显示 Win32 GUI 程序的控制台窗口的情况下执行子控制台程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4743559/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com