C++控制台应用程序阻止退出
C++ console application prevent exit
许多应用程序通过显示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
信号,该信号可以被捕获。点击此处阅读更多
相关文章:
- C++控制台应用程序阻止退出
- boost::asio::io_service 在线程中,不会在应用程序退出时退出
- 我在哪里编写在退出 C++ 窗口窗体应用程序之前执行的代码部分
- 正确退出 gtkmm 应用程序
- OpenGL 应用程序退出,退出代码为 -1073741515 (0xC0000135)
- 即使主窗口关闭,也不会退出应用程序
- 对 QMainWindow 使用 std::unique_ptr 时退出时出现 QT 应用程序分段错误
- 我如何使Ctrl Q退出一个没有Menubar的QT5应用程序
- C++11 监视器类,测试应用程序不想退出
- 仅在我退出应用程序后,使用Cout.write()函数在控制台上打印字符串
- 当我要退出应用程序时,如何在QT中自动调用destructor
- 在另一个线程正在运行的情况下退出应用程序时出错
- 在退出应用程序时安全退出Qt线程
- c++允许后台线程在退出应用程序之前完成
- QT/C++,OS X:退出应用程序时可选择隐藏(),以便应用程序继续运行,并在单击dock中的图标后再次显示
- 退出应用程序时崩溃
- 在某些设备上退出应用程序后仍保留进程
- 退出应用程序前关闭线程
- Win32 c++ openprocess应该返回null,如果用户已经退出应用程序,但没有
- 日志文件不可见,除非用户退出应用程序