Qt程序 获取windows睡眠和亮屏时的状态

QT获取计算机硬件信息 本文介绍利用QProcess获取计算机的CPU、主板、硬盘等电脑相关硬件信息。windows提供了“wmic”(Windows Management Instrumentation,Windows管理工具),提供了从命令行接口和批命令脚本执行系统管理的支持。可以打开cmd在其中输入如下命令,获取相关的信息。 阅读详情

在某些业务需求下,Qt的程序需要感知到windows睡眠和亮屏时状态
以便程序做对应的处理动作。好在Qt为我们提供了QAbstractNativeEventFilter类
来捕获对应的windows事件。

一、步骤如下:
1、主界面MyMainWindow类继承QAbstractNativeEventFilter
2、重载virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result);
3、在main函数中通过installNativeEventFilter注册:
QApplication a(argc, argv);
MyMainWindow w;
w.show();
a.installNativeEventFilter(&w);
a.exec();

二、实现如下:

bool MyMainWindow::nativeEventFilter(const QByteArray &eventType, void *message, long *result)
{
    if (eventType == "windows_generic_MSG" || eventType == "windows_dispatcher_MSG") 
    {
        QDateTime current_date_time = QDateTime::currentDateTime();
        MSG *pMsg = reinterpret_cast<MSG*>(message);
        if (pMsg->message == WM_POWERBROADCAST)    //屏幕唤醒
        {
            if (pMsg->wParam == PBT_APMSUSPEND) {
                qDebug() << "shui mian";
                //处理睡眠后操作
                //...
            }
            else if (pMsg->wParam == PBT_APMRESUMEAUTOMATIC)
            {
                qDebug() << "liang ping";
                //处理亮屏后操作
                //...
            }
            
            QString current_date = current_date_time.toString("yyyy-MM-dd hh:mm::ss.zzz");
            qDebug() << "current_date=" << current_date;
        }
    }
    return false;
}

其中MSG结构体如下:
typedef struct tagMSG {
    HWND        hwnd;     // handle to window
    UINT        message; // msg
    WPARAM      wParam;     // power-management event
    LPARAM      lParam;     // function-specific data
    DWORD       time;
    POINT       pt;
#ifdef _MAC
    DWORD       lPrivate;
#endif
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;

我们通过wParam来区分是睡眠还是亮屏。

msdn的解释:

Qt Windows 7(Win7)下获取并显示电池电量和WIFI信号强度 实际上是在Qt里调用Windows库函数实现的,需在头文件中包含“windows.h”和“wlanapi.h”,wlanapi库用于处理无线相关信息,在.pro文件中还需引用wlanapi.lib。 1.获取并显示电池电量 void Widget::showBattery() { SYSTEM_POWER_STATUS systemPowerSatus; GetSystemPo 阅读详情

相关推荐

QT实现显示电池电量(附完整源码)

QT实现显示电池电量(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 964

Qt - 检测windows系统休眠

系统休眠场景下的软件配置缓存方案-Windows

wellwillw的博客 1111

C4 - 笔记

如何实现 C 语言编译器? https://www.zhihu.com/question/35226878?sort=created c4 - 解决编译错误 https://blog.youkuaiyun.com/Lunar_Queen/article/details/80332668

tianyu的专栏 - Linux site:blog.youkuaiyun.com/wishfly 711

Qt获取Windows锁屏/解锁事件

在Qt窗口中获取锁屏/解锁事件需要先注册windows通知事件 不然无法在qt的nativeEvent中获取到锁屏/解锁事件 可以在qt窗口的构造函数中调用如下代码: bool ret = WTSRegisterSessionNotification((HWND)this->winId(), NOTIFY_FOR_THIS_SESSION); 之后我们需要重载qt窗口的nativeEvent,其中的WTS_SESSION_LOCK就是锁屏,WTS_SESSION_UNLOCK就是解锁事.

rjfjeff的博客 2931

[开源]Qt5.10 PC和Mac系统休眠,检测

最近在开发过程中,遇到对系统休眠有要求,查看帮助文档,有了点发现: [virtual protected]bool QWidget::nativeEvent(const QByteArray &eventType, void *message, long *result) This special event handler can be reimplemented in a subc...

子建莫敌 1952

QT 跨平台检测断网,检测锁屏,检测睡眠,检测屏保功能

跨平台检测断网,检测睡眠,检测屏保,检测锁屏

cs821984831的博客 622

QT获取Windows最大、最小化的状态

获取Windows的窗口属性变化

weixin_45483780的博客 2908

Qt Windows 休眠唤醒信号

Qt Windows 休眠唤醒信号

Qt线程在sleep时能否处理信号

问题 写这个demo的意图是想验证Qt的线程在sleep的情况下能否正常处理其他线程发过来的信号。 验证代码 例子很简单。线程sleep 10分钟,点击主窗口按钮,发送命令,看线程是否能够响应。代码如下: 线程代码: threadtest.h #ifndef THREADTEST_H #define THREADTEST_H   #include   class threa

qttudousi的专栏 1430

Qt5.10检测系统休眠

Qt5.10 或Mac检测系统休眠,PC和Mac均通过。 貌似在Qt5上都适用

不只是对齐:用 MFA 和 Praat 给你的语音数据集快速生成 TextGrid 标注文件

本文详细介绍了如何利用Montreal Forced Aligner(MFA)和Praat工具快速生成TextGrid标注文件,大幅提升语音数据标注效率。通过批量对齐、质量校验和跨语言处理等实战技巧,帮助研究者构建自动化标注流水线,适用于语音合成和语音识别等多种应用场景。

weixin_30675247的博客 378

轻松实现夜间模式

夜间模式的简单实现

WHCZKL的博客 925

Docker容器化部署Ceph集群:从零搭建高可用分布式存储

本文详细介绍了如何使用Docker容器化部署Ceph集群,从零搭建高可用分布式存储系统。通过环境一致性、快速扩容和资源隔离等优势,Docker显著提升了Ceph集群的部署效率和运维便捷性。文章涵盖硬件规划、镜像选择、单节点部署、多节点扩展及性能调优等实战内容,帮助开发者快速掌握分布式存储系统的容器化部署技巧。

weixin_29081101的博客 422

Qt 暗夜模式的设置

Qt 暗夜模式的设置 一. 先配置为Dark风格 二. 配置编辑器的风格 工具-》选项 文本编辑器 -》 字体和颜色 在此配置字体和颜色 笔者的选择见下图在这里插入代码片 最终配置得到的效果 还不戳~ 咦耶~ ...

Andrea-地面宇航员 3201

【阿里云大模型高级工程师ACP习题集】2.9 大模型应用生产实践(下篇)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 2233

Xilinx SDK工程编译、链接、调试注意事项

1、添加工程 启动SDK时选取workspace,如下图所示: 对应的workpace文件夹中会生成如下几个文件: 如果当前workspace是首次加载工程,SDK会进入启动界面 点击Import Project,导入已有工程 点击Browse,添加工程路径,一个完整的工程包含一个bsp文件夹,一个HW文件夹,和一个src文件夹(添加C功能函数) 点击Fini...

Autumn_He的博客 1万+

qt--windows中使用Sleep函数

#include “Windows.h” Sleep(TIME_INTERVAL);

蓝蓝的天 1417

汽车轮胎动平衡背后的秘密:如何用惯性主轴原理消除方向盘抖动

本文深入解析了汽车轮胎动平衡的核心原理,即利用惯性主轴原理消除高速行驶时的方向盘抖动。文章从方向盘抖动的现象出发,阐释了动不平衡产生的物理本质,并详细介绍了如何通过动平衡机测量、计算与校正,使轮胎-轮毂系统的实际旋转轴回归其惯性主轴,从而实现稳定运转。

grafana6viz的博客 346

7、Qt延时的使用

Qt延时;QThread::sleep();QThread::msleep();QThread::usleep(); QTimer::singleShot()与QEventLoop()

Viciower的博客 7778

MIKE 21 教程 2.9 初始条件(Initial Conditions),边界条件Boundary Conditions),解耦(Decoupling)

本节讲解初始条件与边界条件的设置。这两个模块如设置有误则极易出现模型崩溃。

Hello Word 4800

YOLO26涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLO26做红外小目标检测有效涨点

本文提出一种基于APCM模块改进的YOLO26网络模型,通过像素级局部-全局协同建模动态增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,在特征提取阶段有效提升目标区域特征表达质量,尤其适用于低对比度和复杂场景下的目标检测。实验表明,该方法能显著提高小目标检测精度和模型鲁棒性,同时保持较低计算开销。模块通过局部特征分支和全局特征分支的协同融合,实现了对红外小目标的有效增强,在NUAA-SIRST和IRSTD-1K数据集上性能优于现有方法。文章还提供了完整的代码实现和配置指南。

Ai缝合怪、助力小伙伴高效发论文 188

QT主线程延时函数

@TOC void QMainWindow::sleep(int msec) { QDateTime last = QDateTime::currentDateTime(); QDateTime now; while (1) { now = QDateTime::currentDateTime(); if (last.msecsTo(now) >= msec) { break; }

平凡的人,平凡的路,平凡的人生 1421

《PLECS仿真与实战:从建模到高端应用》-专栏文件目录

《PLECS仿真与实战:从建模到高端应用》是一本系统介绍PLECS电力电子仿真软件的实用指南。全书共10章,首先介绍软件安装与基础操作,包括RC电路仿真等入门内容;随后深入讲解各类电力电子电路的建模与仿真,涵盖整流、交交变换、直流变换、逆变等电路;最后探讨PWM控制建模和直流调速系统等高端应用。书中配有丰富的示例程序和波形分析方法,附录还包含电力电子器件、代码生成等实用资料。该书适合电力电子领域工程师和学生系统学习电路仿真技术。

540

获取显示器

【代码】获取显示器。

weixin_50577176的博客 386

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Qt休眠函数

可以使用Qt自带的Sleep()方法,但使用这个方法会导致主线程休眠,UI卡顿,所以采用以下函数进行休眠。调用此函数时,传入所需休眠的毫秒数。

Mohammedzy的博客 3410

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Qt实现 内嵌CEF制作浏览器(首篇)

介绍 cef支持跨平台,是基于Chromium的开源浏览器控件,全称Chromium Embedded Framework。 本文主要介绍如何下载cef以及编译windows下的cef项目,并运行查看浏览器显示效果。 QT内嵌CEF优势: Qt自带QWebEngine模块,可以快速实现浏览器,但是在实际使用中,在某些AMD显卡电脑运行使用了QWebEngine的qt软件, 会卡顿甚至奔溃,坑还是比较多的。选择cef就可以避免这种问题。 开发准备 cef下载网址:http://opensource.sp

c_shell_python的博客 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: Qt之QListWidget实战
下一篇: Qt 实现动态矩阵界面
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值