gpt4 book ai didi

c++ - 带有隐藏控制台窗口的 AllocConsole()

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:13 24 4
gpt4 key购买 nike

我正在尝试启动 bash.exe,以交互模式运行,作为子进程。我发现这样做的唯一方法是从控制台程序启动 bash.exe,或者将 AllocConsole() 启动到非控制台程序,然后启动它。似乎如果它不是从控制台程序启动的,或者至少是一个已分配控制台的程序,bash.exe 将拒绝以交互模式启动。

由于基础程序必须是 GUI 程序,所以我必须使用 AllocConsole。但是,如果我这样做,就会创建一个可见的控制台。这对于我正在构建的程序来说是 Not Acceptable 。

我知道如何创建隐藏的子进程,但弹出的控制台来自 AllocConsole,而不是 CreateProcess。有很多这样的问题,但大多数都以解决方法结束,而且我的情况似乎排除了我能找到的所有解决方法。

如何在不出现控制台的情况下使用 AllocConsole?如果做不到这一点,我如何在不使用 AllocConsole 的情况下以交互模式将 bash.exe 作为 GUI 程序的子进程启动?

最佳答案

eryksun 的方法奏效了。我使用以下设置启动该过程。然后,我可以使用 AttachConsole 和 FreeConsole 以及 processId 来操作控制台。

siStartInfo.wShowWindow = SW_HIDE;
siStartInfo.dwFlags = STARTF_USESHOWWINDOW;

BOOL success = CreateProcess(
applicationAddress, // absolute path to the application
TEXT("-i"), // command line
NULL, // process security attributes
NULL, // primary thread security attributes
TRUE, // handles are inherited
CREATE_NEW_CONSOLE, // creation flags
NULL, // use parent's environment
NULL, // use parent's current directory
&siStartInfo, // STARTUPINFO pointer
&piProcInfo); // receives PROCESS_INFORMATION

关于c++ - 带有隐藏控制台窗口的 AllocConsole(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46551865/

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