繁体   English   中英

具有隐藏控制台窗口的AllocConsole()

[英]AllocConsole() with hidden console window

我试图启动以交互模式运行的bash.exe作为子进程。 我发现执行此操作的唯一方法是从控制台程序启动bash.exe,或将AllashConsole()启动到非控制台程序,然后启动它。 看来,如果它不是从控制台程序启动的,或者至少不是从已分配控制台的程序启动的,则bash.exe拒绝以交互方式启动。

由于基本程序必须是GUI程序,因此我必须使用AllocConsole。 但是,如果这样做,则会创建一个可见的控制台。 对于我正在构建的程序,这是不可接受的。

我知道如何创建隐藏的子进程,但是弹出的控制台来自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 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM