c++ - C++ 控制台应用程序阻止退出
问题描述
许多应用程序通过显示带有 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 上尝试过。
推荐阅读
- javascript - 使用“set”使用 Mongoose 更新现有子文档的数组元素有困难吗?
- reactjs - React Typescript 应用程序的屏幕变为空白
- javascript - npm 是否会始终安装指定范围内的最新可用版本?
- javascript - 如何从 Django 中的 html 或 js 访问环境变量
- c++ - 根据用户输入用字母填充向量,并将 Start 和 End 放在四肢上
- json - 如何在 vue js 应用程序中单击按钮下载 json 文件
- ubuntu - 为动态域(如通配符)发出 ssl
- r - 为 sf 对象的绘图设置色阶限制
- r - 为R中的每一行生成具有不同概率的随机数
- react-native - Expo React Native 上的 Android 唯一 ID