C++控制台应用程序阻止退出

C++ console application prevent exit

本文关键字:退出 应用程序 控制台 C++      更新时间:2023-10-16

许多应用程序通过显示YES(应用程序退出(和NO(应用程序继续运行(的消息框来询问用户是否真的想关闭应用程序。控制台应用程序(点击x图标或CTRL+C(也可能这样做吗?

我从未使用过ctrl-c处理程序,但它可能适用于您的系统。这将捕获ctrl break、X或alt-F4。在您的程序中,调用SetConsoleCtrlHandler

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
int main()
{
SetConsoleCtrlHandler(exit_handler, TRUE);
...
}

出口处理程序定义为

BOOL WINAPI exit_handler(DWORD dwCtrlType)
{
switch (dwCtrlType)
{
case CTRL_C_EVENT:
// Never gotten this to work - use another method
return MessageBox(NULL, "Mr Ctrl C", "Do you wish to exit", MB_YESNO) == IDNO;
case CTRL_BREAK_EVENT:
return MessageBox(NULL, "Mr Ctrl Break", "Do you wish to exit", MB_YESNO) == IDNO;
case CTRL_CLOSE_EVENT:
return MessageBox(NULL, "Mr X or Mr Alt-F4", "Do you wish to exit", MB_YESNO) == IDNO;
default:
return FALSE;
}
// Never gets here
return TRUE;
}

TRUE表示您已经处理了该命令,FALSE表示您尚未处理。如果要退出,请返回FALSE。

编辑这适用于XP和W7。我还没有在W10或W8上试过。

CTRL-C向程序发送SIGINT信号,该信号可以被捕获。点击此处阅读更多