码迷,mamicode.com
首页 > Windows程序 > 详细

qt捕获全局windows消息

时间:2019-12-13 14:10:25      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:als   public   vat   null   patch   xpl   全局   gen   clu   

mainwindow.h

 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QAbstractNativeEventFilter>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow,public QAbstractNativeEventFilter
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    bool nativeEventFilter(const QByteArray & eventType, void * message, long * result);


private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

#include <windows.h>
#pragma comment(lib, "user32.lib")

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

bool MainWindow::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一样的忙碌检测
            qDebug() << "nativeEventFilter:"<<pMsg->pt.x;
        }
    }

    return false;
}

 

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    a.installNativeEventFilter(&w);

    return a.exec();
}

qt捕获全局windows消息

标签:als   public   vat   null   patch   xpl   全局   gen   clu   

原文地址:https://www.cnblogs.com/xiang--liu/p/12034608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!