我正在使用Visual Studio 2013中的C ++控制台应用程序,在Windows上工作。
首先我使用FreeConsole
分离控制台,它工作; 然后,将AllocConsole
作为FreeConsole调用, 然后AttachConsole不工作提示,返回true
意味着成功; 最后,我尝试使用AttachConsole
将其附加回去,但是没有发生任何事情 –
#include <psapi.h> DWORD winpid = GetCurrentProcessId(); // get pid std::cout << winpid; // it works FreeConsole(); // console lost bool succeed = AllocConsole(); //succeeded. succeed = AttachConsole(winpid); // return false: failed. if (!succeed) LastError = GetLastError(); // Error Code 5
系统错误代码5意味着 :
ERROR_ACCESS_DENIED 5 (0x5) Access is denied.
我应该如何正确地连接控制台?
在AttachConsole之前删除AllocConsole调用。
从文档 :一个进程可以连接到最多一个控制台。 如果调用进程已经连接到控制台,则返回的错误代码是ERROR_ACCESS_DENIED(5)。