qt捕获全局windows消息(使用QAbstractNativeEventFilter,然后注册这个类)
2016-08-04 23:23
381 查看
qt 如何捕获全屏的鼠标事件,这个帖子上面主要讲述了下嵌入式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
首先是让你自己的类继承自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
相关文章推荐
- 如何在Qt中处理(接收/发送)MFC或Windows消息(直接覆盖MainDialog::nativeEvent,或者QApplication::installNativeEventFilter安装过滤器,或者直接改写QApplication::nativeEventFilter)
- 激活前一个程序(注册全局消息,使用Mutex探测,如果已经占用就广播消息通知第一个程序,然后第一个程序做出响应)
- qt捕获全局windows消息
- 关于捕获WM_MOUSELEAVE/WM_NCMOUSELEAVE消息和TrackMouseEvent 的使用
- Windows消息:怎样使用RegisterWindowMessage注册消息
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- Windows消息:怎样使用RegisterWindowMessage注册消息
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- 在java程序中如何能获取到另一个程序的windows句柄,又如何使用这个句柄向这个窗口发送消息
- 简单的QT绘图程序(把全部的点都记录下来,然后在paintEvent里使用drawLine函数进行绘制,貌似效率很低。。。)
- React-Native新版本RCTEventEmitter的使用(从原生发送消息到JS)
- 简单的QT绘图程序(把全部的点都记录下来,然后在paintEvent里使用drawLine函数进行绘制,貌似效率很低。。。)
- Qt:当前窗口注册全局键盘消息
- 在Windows下安装zookeeper并启动,因为dubbo推荐使用这个注册中心
- Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)
- Qt中捕获Windows消息
- 使用windows钩子捕获进程的启动和关闭消息
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- React-Native新版本RCTEventEmitter的使用(从原生发送消息到JS)