我如何检测用户计算机何时进入休眠状态(笔记本计算机机盖关闭,由于不事件而进入休眠模式等)?

我需要执行此操作以断开用户的TCP连接。基本上,我们有一个简单的聊天应用程序,希望使用户脱机。

最佳答案

没有Qt方法可以检测计算机何时进入休眠或休眠状态。但是有一些平台相关的方法可以做到这一点。

在Windows上,您可以在WindowProc处理程序中监听WM_POWERBROADCAST消息:

LRESULT WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
  if (WM_POWERBROADCAST == message && PBT_APMSUSPEND == wParam) {
    // Going to sleep
  }
}

在Linux上,您可以将以下shell脚本放在/etc/pm/sleep.d中,该脚本执行带有参数的程序。您可以启动程序并以某种方式通知您的主应用程序:
#!/bin/bash
case $1 in
suspend)
    #suspending to RAM
    /Path/to/Program/executable Sleeping
    ;;
resume)
    #resume from suspend
    sleep 3
    /Path/to/Program/executable Woken
    ;;
esac

对于OS X,您可以看到this

关于c++ - Qt检测计算机何时进入休眠状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23373507/

10-11 20:10