如何以编程方式检查键盘是否已连接?
How to check programatically if keyboard is connected or not?
我正在使用 C# winforms 开发应用程序。
我们的应用程序将安装在win8表面(触摸屏设备)上。
我们想检查键盘是否通过 USB 连接,然后我们的应用程序将不会显示软键盘,否则会显示。
许多方法可用于检查 WinRT,但 none 用于 winforms C#。
如果我的问题不清楚,请告诉我。
提前致谢。
我刚刚写了这篇文章并在 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
希望这对您有所帮助。
要确定它是否通过 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
我正在使用 C# winforms 开发应用程序。
我们的应用程序将安装在win8表面(触摸屏设备)上。
我们想检查键盘是否通过 USB 连接,然后我们的应用程序将不会显示软键盘,否则会显示。
许多方法可用于检查 WinRT,但 none 用于 winforms C#。
如果我的问题不清楚,请告诉我。
提前致谢。
我刚刚写了这篇文章并在 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
希望这对您有所帮助。
要确定它是否通过 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