簡體   English   中英

在Windows 8中使用C#的原始輸入獲取HID鍵盤設備

[英]Get HID Keyboard Device Using Raw Input from C# in Windows 8

我閱讀了《 使用C#使用原始輸入來處理多個鍵盤》並下載了源代碼 當我在Windows 7中運行它時,它可以工作,但在Windows 8中運行它時,它失敗了。

我有“對象引用未設置為對象的實例”。 錯誤

string deviceClass = (string)OurKey.GetValue("Class");
if (deviceClass.ToUpper().Equals("KEYBOARD"))

我在string deviceClass處放置了斷點,並看到該值為null。 如果您查看下載的源,那么將從注冊表中獲取值。 Windows 7和Windows 8在獲取此值方面有什么區別嗎? 我該如何解決?

該代碼希望在適當的HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\HID\\密鑰中存在Class值,在我的Windows 8計算機上,所有條目都沒有該密鑰,因此您將獲得描述的行為。

即使鍵確實存在,這也是獲取課程的一種糟糕方法; 而是p / invoke GetRawInputDeviceInfo()作為設備類。

這是由於Windows 8及更高版本中不再使用的REG_SZ 值。

您可以改用Service值,但請確保搜索適當的數據kbdhid

string deviceClass = (string)OurKey.GetValue("Service");
if (deviceClass.Equals("kbdhid"))

暫無
暫無

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

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