簡體   English   中英

可以將鍵盤輸入綁定到 Win32 中的單個應用程序嗎?

[英]Possible to Tie Keyboard Input to a Single Application in Win32?

我有一個相當不尋常的 Windows 項目,它讓我相信我們試圖完成的事情可能是不可能的。 我們正處於希望讓應用程序偵聽來自專有鍵盤設備的輸入並對其進行處理的地步。 此應用程序在后台運行,並始終使用帶有原始輸入的輸入接收器進行偵聽。

由於設備是一個鍵盤,前台 window 總是得到輸入,我們的應用程序也會聽到它。 理想情況下,我們希望我們的設備是唯一能聽到設備輸入的設備。 據我研究,似乎沒有任何方法可以將來自特定設備的輸入綁定到特定應用程序並讓所有其他應用程序忽略它。 我看到了BlockInput()但這會關閉每個設備的用戶輸入。

這甚至可能嗎?

編輯:為了澄清一些事情,該設備被系統視為鍵盤,我可以使用原始輸入將其檢測為鍵盤並獲取擊鍵。 作為鍵盤設備,任何前台 window 都會在用戶與其交互時接收擊鍵。 該應用程序在采取特定操作之前偵聽來自該設備的擊鍵。 我只希望應用程序接收輸入。

經過一些額外的測試,使用WH_KEYBOARD鈎子進行阻塞只是部分可靠。 即使在移動 DLL 並按照我從其他人那里讀到的權限調整后,它也不適用於更新樣式的 Windows Store 應用程序或更高級的應用程序。 此外,根據我的嘗試,它經常會錯過或得到重復的鈎子消息。

WH_KEYBOARD_LL更可靠,但不能使用,因為它出現在識別設備的原始輸入消息之前。

我得出的結論是,唯一可靠的方法是通過低級驅動程序/內核編程。 那是完全不同的蠕蟲罐頭,我不打算尋找開罐器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM