2014-12-24 42 views
0

我閱讀文章Using Raw Input from C# to handle multiple keyboards並下載source。它在Windows 7中運行時工作,但在Windows 8中運行時失敗。在Windows 8中使用來自C#的原始輸入獲取HID鍵盤設備

我有「對象引用未設置爲對象實例」。錯誤的

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

我把斷點string deviceClass,看看值爲null。如果您查看下載的源,則從註冊表中獲取該值。 Windows 7和Windows 8獲得此值有什麼區別?我該如何解決這個問題?

回答

2

該代碼需要在適當的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID\密鑰中存在Class值,在我的Windows 8計算機上,沒有任何條目具有此密鑰,因此您將獲得您描述的行爲。

即使密鑰確實存在,這也是一種糟糕的方式來獲得課程;而不是爲設備類別調用GetRawInputDeviceInfo()

+0

謝謝你的信息,我會尋找'GetRawInputDeviceInfo' – Willy

0

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

您可以使用服務值來代替,但一定要尋找合適的數據kbdhid

string deviceClass = (string)OurKey.GetValue("Service"); 
if (deviceClass.Equals("kbdhid")) 
相關問題