qt捕獲全局windows消息


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

 

如果您覺得文章不錯,不妨給個 打賞,寫作不易,感謝各位的支持。您的支持是我最大的動力,謝謝!!! 

 

  


很重要--轉載聲明

  1. 本站文章無特別說明,皆為原創,版權所有,轉載時請用鏈接的方式,給出原文出處。同時寫上原作者:朝十晚八 or Twowords
  2. 如要轉載,請原文轉載,如在轉載時修改本文,請事先告知,謝絕在轉載時通過修改本文達到有利於轉載者的目的。 


免責聲明!

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



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