Feststellen, ob eine Tastatur angeschlossen ist?
-
Hallo,
habe eine etwas ungewöhnliche Frage, und zwar bin ich auf der Suche nach einer Möglichkeit, festzustellen, ob eine Tastatur angeschlossen ist am PC. Welche Varianten gibt es? Mir ist prinzipiell alles recht, auch P/Invoke, C++ etc.
Hintergrund: WPF Applikation auf Windows 8 Tablets, wo manchmal Tastaturen dran sein können oder eben auch nicht, weil der User diese gerade abgenommen hat :p
Für Ideen vielen Dank
Freundliche Grüsse
-
Uff.
Ich würde mir mal die WMI Klassen ansehen.http://msdn.microsoft.com/en-us/library/system.management.managementobjectsearcher.aspx
Beispiel z.B. hier:
http://msdn.microsoft.com/en-us/library/3x6at5a0.aspxZum Ausprobieren kannst du "wbemtest" verwenden (einfach "Start" und "wbemtest" eintippen sollte reichen - das Ding kommt entweder mit Windows oder mit Visual Studio mit).
Mal auf die Schnelle gegoogelt und ausprobiert scheint die
Win32_Keyboard
WMI Klasse vielversprechend zu sein.Probier mal ob da bei deinem Tablet Instanzen gelistet werden wenn kein Keyboard angeschlossen ist.
(wbemtest -> Connect ... -> Connect -> Enum Instances ... -> "Win32_Keyboard" -> OK).
Bei mir wird da genau ein Gerät gelistet (USB), ich behaupte einfach mal das ist mein KeyboardWobei das
vermutlichziemlich sicher nicht mit Windows Store Apps funktionieren wird, weil die kein WMI verwenden dürfen.Windows Store App-tauglichen Weg kenne ich keinen. Falls du das brauchte müsstest du in der Windows Runtime API Doku gucken obs da irgendwas gibt. Wobei ich eher vermute dass nein.EDIT: Holla, wie man sich irren kann:
http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.input.keyboardcapabilities.aspx
http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.input.keyboardcapabilities.keyboardpresent.aspx
-
Unglaublich.
KeyboardCapabilities.KeyboardPresent
und schon hat man was man will. Das ist die Welt von Windows Runtime und .NET. Das Problem ist zumeist nur, dass kein Schwein diese Klassen kennt.Vielen Dank!
: Natürlich darf es nicht so einfach sein: Windows 8 WinRT KeyboardCapabilities.KeyboardPresent is always true
-
Hmpf. Doof.
Vielleicht geht's mit DeviceInformation.FindAllAsync
----
Brauchst du denn eine App Store kompatible Lösung?
Die WMI Sache sollte sonst nämlich zuverlässig funktionieren.