2016-10-15 268 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