[英]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.