qt捕获全局windows消息(使用QAbstractNativeEventFilter,然后注册这个类)
时间:2022-03-18 01:08
,这个帖子上面主要讲述了下嵌入式qt怎么抓取系统级消息,不过从这篇文章中我也看到了希望,有个回复说winEventFilter支持这种方式,然后我就顺着这个线索找到了nativeEventFilter方法,最终试验成功。
首先是让你自己的类继承自QAbstractNativeEventFilter,然后通过QCoreApplication来注册你的窗口类,代码如下:
app.installNativeEventFilter(m_MainWindow);
最后在nativeEventFilter方法中就能获取到系统级事件,我的qt5.5.观看qt的帮助文档,如图1所示
图1
bool CCailianMainWindow::nativeEventFilter(const QByteArray & eventType, void * message, long * result)
{
if (eventType == "windows_generic_MSG" || eventType == "windows_dispatcher_MSG")
{
MSG * pMsg = reinterpret_cast<MSG *>(message);
if (pMsg->message == WM_NCMOUSEMOVE)
{
//获取到系统鼠标移动,可以做像qq一样的忙碌检测
}
}
return false;
}
调试结果如图2所示
图2
http://www.cnblogs.com/swarmbees/p/5632765.html
本类排行
- 1terminate called after throwing an instance of 'std::cad_alloc' what():std::bad_alloc
- 2动态 WebApi 引擎使用教程(3行代码完成动态 WebApi 构建)
- 3windows 查看文件的md5/sha1/sha256
- 4打造一个window桌面应用:在线聊天对话机器人
- 5git windows下换行符问题 LF与CRLF转换
- 6[Linux]Windows远程CENTOS7桌面
- 7FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。
- 8K8S--可视化界面Kubernetes Dashboard(API Server方式)
- 9搜索引擎sphinx的windows安装和使用
- 10Redis安装成windows服务