如何使用C++捕获窗口关闭/重新启动消息
How to capture windows shut down/ Restart message using C++
如果用户关闭/重新启动/注销计算机,我想以编程方式检查我的应用程序。我尝试实现以下代码,但它给出了编译错误
error: invalid conversion from 'bool (*)(DWORD)' to 'BOOL (*)(DWORD)'
error: initializing argument 1 of 'BOOL SetConsoleCtrlHandler(BOOL (*)(DWORD), BOOL)'
void TestApp:: OnQuit()
{
SetConsoleCtrlHandler(HandlerRoutine, TRUE);
}
//Windows Call Back function implementation
bool WINAPI HandlerRoutine(DWORD dwCtrlType)
{
bool ret = false;
if (dwCtrlType == CTRL_LOGOFF_EVENT || dwCtrlType == CTRL_SHUTDOWN_EVENT)
//Graceful Quit
return ret;
}
我的开发环境是QT Creator QT SDK和C++。
正如其他人所说,BOOL
是int
,而不是bool
。 bool
的标称值为true
和false
、1
和0
。 BOOL
使用FALSE == 0
和TRUE == !FALSE
。 这里大部分都无关紧要,因为它们基本上以相同的方式工作。
BOOL
来自WinAPI的旧传统,当时C
没有内置的bool
类型。
因此,您真正需要做的就是在处理程序中将bool
更改为BOOL
:
BOOL WINAPI HandlerRoutine(DWORD dwCtrlType)
^^^^
{
BOOL ret = false;
^^^^
if (dwCtrlType == CTRL_LOGOFF_EVENT || dwCtrlType == CTRL_SHUTDOWN_EVENT)
//Graceful Quit
return ret;
}
相关文章:
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 如何使用 ctypes 停止和重新启动从 Python 运行的C++代码
- 重新启动后,线程无法在 while 循环中再次运行
- 在程序和基于文本的游戏和C++内重新启动程序
- 在程序/基于文本的游戏/C++内重新启动程序
- 为什么使用 exec() 重新启动程序不能正常工作?
- 即使在我关闭应用程序并重新启动它后,如何保持我的 ID 被阻止?
- 有没有办法在不重新启动或注销的情况下加载游标?
- IO服务重新启动后,Boost最后期限计时器持续触发
- 在C++中重新启动随机数序列
- 稍后在构造函数中重新启动异常指令删除此指令
- 如何获取代码::块以在代码::块重新启动后保持库的配置?
- 我想在我设置的几秒钟后重新启动我的程序
- 如何使重新启动此循环,当用户输入 1 时,并在 0 时停止
- UDP 服务器每 5 秒重新启动一次
- 有没有办法检查内存缓存是否已重新启动?
- (Windows 10) 在不更新的情况下重新启动C++
- Live555MediaServer 在每个新连接时重新启动流。为什么将"reuseSource"设置为 true 无法按预期工作?
- 如何使用C++捕获窗口关闭/重新启动消息
- 即使在客户端停止或服务器重新启动后,UDP 消息仍会不断到达