我正在用C#winforms开发一个应用程序。
我们的应用程序将安装在win8表面(触摸屏设备)上。
我们想检查键盘是否通过USB连接,然后我们的应用程序将不会显示软键盘,否则会显示。
许多方法可用于检查WinRT,但没有用于winforms C#。
如果我的问题不明确,请告诉我。
提前致谢。
答案 0 :(得分:3)
我刚写了这个并在W8上测试过:
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select Name from Win32_Keyboard");
foreach(ManagementObject keyboard in searcher.Get())
{
if (!keyboard.GetPropertyValue("Name").Equals(""))
{
Console.WriteLine("KB Name: {0}", keyboard.GetPropertyValue("Name"));
}
}
我还连接了第二个键盘,可以看到它被检测到。当我拔掉一个时,我得到一个条目,拔掉两个我什么也没得到。
我在这里也找到了一些例子: Example 1 在这里Example 2
希望这会有所帮助。
答案 1 :(得分:1)
要确定它是否通过USB连接,请检查该字符串:
private readonly string USB = "USB";
private bool GetKeyboardPresent()
{
bool keyboardPresent = false;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from Win32_Keyboard");
foreach (ManagementObject keyboard in searcher.Get())
{
foreach (PropertyData prop in keyboard.Properties)
{
if (Convert.ToString(prop.Value).Contains(USB))
{
keyboardPresent = true;
break;
}
}
}
return keyboardPresent;
}
或者您可以改为使用此Powershell命令:
PS C:\Users\myUserID> Get-WmiObject Win32_Keyboard