qt捕獲全局windows消息(使用QAbstractNativeEventFilter,然后注冊這個類)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM