全域性鍵盤鉤子失效與WebRTC的關係分析

2022-06-14 06:24:11 字數 542 閱讀 7316

1.背景:

使用qt+cef做了乙個客戶端,並在客戶端中註冊了全域性鍵盤鉤子,本來一切都工作正常,鍵盤鉤子也正常,但是我發現當我在cef中載入了執行webrtc功能的頁面時,

鍵盤鉤子盡然失效了,不過切換到其他的桌面程式的時候,發現這個鍵盤鉤子還是存在的,起作用的。

2.分析

通過上面的現象開始排查,webrtc主要是用到攝像頭和麥克風功能;通過單獨的測試,如果只開啟攝像頭的話,鍵盤鉤子依舊有效,那問題的根源就在於當網頁中使用了麥克風時,會導致鍵盤鉤子失效。

首先想到的是到cef forum上查詢,起初不知道該怎麼描述這種現象,不確定是否有其他人遇到這種應用場景很小的問題,不過通過仔細查詢,最終也是找到了乙個帖子,所描述的現象與現在存在的問題一致。

對chromium原始碼分析:

追蹤到關鍵型別:userinputmonitor類,這個類決定是否對使用者鍵盤輸入monitor,目前chromium也沒有提供單獨的控制引數來關閉這個monitor,所以暫時無解。

3.解決辦法

4.鏈結

forum討論:

原始碼:

VC全域性鍵盤鉤子

hodll.h main header file for the hodll dll if defined afx hodll h b2a458dc 71e2 47d5 9ea0 58385d558643 included define afx hodll h b2a458dc 71e2 47d5 ...

c 全域性鍵盤鉤子

using system using system.collections.generic using system.text using system.windows.forms using system.runtime.interopservices using system.diagnosti...

HOOK使用 全域性鍵盤鉤子

define win32 winnt 0x0500 設定系統版本,可以使用底層鍵盤鉤子 define wm my shorts wm user 105 include windows.h 全域性變數 lpword g lpdwvirtualkey null keycode 陣列的指標 int g n...