我正在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)。