我正在Windows上使用Visual Studio 2013中的C++控制台应用程序。

首先,我使用FreeConsole分离了控制台,它可以正常工作;然后,按照FreeConsole then AttachConsole not working的建议将其称为AllocConsole,返回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

System Error Code 5 means:
ERROR_ACCESS_DENIED
5 (0x5)
Access is denied.

如何正确连接控制台?

最佳答案

在AttachConsole之前删除AllocConsole调用。

documentation:
一个进程最多可以连接到一个控制台。如果调用过程已附加到控制台,则返回的错误代码为ERROR_ACCESS_DENIED(5)。

09-08 02:53