FreeConsole然后AttachConsole无法正常工作

时间:2016-10-15 13:29:37

标签: c++ windows console-application

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

首先我使用FreeConsole分离控制台,它可以工作;然后,我尝试使用AttachConsole将其附加回来,但没有任何反应 -

#include <psapi.h>

DWORD winpid = GetCurrentProcessId(); // get pid
std::cout << winpid; // it works    
FreeConsole(); // console lost
std::cout << "Lost to the bit bucket"; //nothing happen, as expected
AttachConsole(winpid); // try find the console back....
std::cout << "c"; // ... but failed

我怎么能找到丢失的控制台?

1 个答案:

答案 0 :(得分:1)

当您调用FreeConsole()时,您的控制台将不复存在。您无法调用AttachConsole(),因为没有要附加的内容。您应该改用AllocConsole()创建一个新的控制台,然后像这样“附加”它:

AllocConsole();
FILE* f;
freopen_s(&f, "CONOUT$", "w", stdout);

然后稍后释放控制台:

fclose(f);
FreeConsole();