以下是一个示例代码,使用AllocConsole函数分配一个新的控制台窗口,并使用SetConsoleCtrlHandler函数设置一个控制台控制器处理程序,以防止终止:
#include
#include
BOOL WINAPI ConsoleHandler(DWORD dwCtrlType)
{
switch (dwCtrlType)
{
case CTRL_C_EVENT:
case CTRL_CLOSE_EVENT:
case CTRL_BREAK_EVENT:
case CTRL_LOGOFF_EVENT:
case CTRL_SHUTDOWN_EVENT:
// 处理控制台关闭事件
// 在此处添加你的代码
return TRUE;
default:
return FALSE;
}
}
int main()
{
// 分配一个新的控制台窗口
AllocConsole();
// 设置控制台控制器处理程序
SetConsoleCtrlHandler(ConsoleHandler, TRUE);
// 在控制台中输出一些信息
std::cout << "This is a console application." << std::endl;
std::cout << "Press CTRL+C or close the console to exit." << std::endl;
// 等待控制台关闭
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
上述代码首先使用AllocConsole函数分配一个新的控制台窗口。然后,使用SetConsoleCtrlHandler函数设置一个控制台控制器处理程序,该处理程序在控制台关闭时被调用。在处理程序中,可以添加你的代码来处理控制台关闭事件。最后,代码使用GetMessage函数等待控制台关闭。