将STDIN与AllocConsole()一起使用

Now*_*ayz 6 c++ winapi windows-console

我有一个第三方dll,我加载到不是我的软件,我正在使用AllocConsole()创建标准的Windows CLI窗口,所以我有一个简单的方法输出调试消息.

我的问题是,它忽略了任何类型的输入.我只是希望能够使用我分配的控制台,并使我能够给它一些输入.

Now*_*ayz 14

感谢Ben Voigt,通过执行以下操作,我可以让控制台在分配后获取输入:

freopen("CONIN$", "r", stdin); 
freopen("CONOUT$", "w", stdout); 
freopen("CONOUT$", "w", stderr); 
Run Code Online (Sandbox Code Playgroud)

这也会将stdout和strerr指向同一个控制台窗口,以防它们出于某种原因被指向其他地方.

  • 万一它对任何人都有帮助,在VS2013中,如果没有“放回” stdout / stderr:freopen(“ OUT”,“ w”,stdout),就无法通过FreeConsole关闭控制台。 (2认同)