2016-10-15 244 views
1

我正在使用Windows中的Visual Studio 2013中的C++控制台应用程序。AttachConsole错误5:访问被拒绝

首先我使用FreeConsole分离控制台,它的工作原理;那么,建议AllocConsoleFreeConsole then AttachConsole not working,返回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. 

如何应我正确安装控制台?

回答

2

在AttachConsole之前删除AllocConsole调用。

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

+0

你的建议正是我之前做的:http://stackoverflow.com/questions/40059618/freeconsole-then-attachconsole-not-working,它不起作用。 – athos

+0

你是否检查过FreeConsole的结果? –

+0

FreeConsole返回true,意味着成功,正如前一篇文章解释的那样。 – athos