我试图简单地检测是否有键盘连接到我机器上的 PS/2 端口。这个想法是计算机将启动,但如果它检测到 USB 设备或 PS/2 键盘,它会重新启动到管理员模式。
我已经处理了 USB 方面的问题,尽管我没有找到任何关于 PS/2 端口的文档。有些帖子说在启动后无法检测到键盘插入 PS/2 端口,尽管我只是想在启动时检查是否有一个连接。
我正在为我的程序使用 C#,因此任何使用这种语言的解决方案都会非常有帮助,尽管任何语言的帮助都会很有帮助。
最佳答案
WMI似乎是这样做的:
ConnectionOptions opts = new ConnectionOptions();
ManagementScope scope = new ManagementScope(@"\\.\root\cimv2", opts);
string query = "select * from Win32_Keyboard";
System.Management.ObjectQuery oQuery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, oQuery);
ManagementObjectCollection recordSet = searcher.Get();
foreach (ManagementObject record in recordSet)
{
Console.WriteLine("" + record.Properties["Description"].Value);
Console.WriteLine("" + record.Properties["Layout"].Value);
Console.WriteLine("" + record.Properties["DeviceID"].Value);
Console.WriteLine("" + record.Properties["PNPDeviceID"].Value);
Console.WriteLine("" + record.Properties["Status"].Value + "\n");
}
返回:
USB Human Interface Device
0000040C
USB\VID_03F0&PID_0024\6&1A939CC4&0&1
USB\VID_03F0&PID_0024\6&1A939CC4&0&1
OK
Standard 101/102-Key or Microsoft Natural PS/2 Keyboard
0000040C
ACPI\PNP0303\4&3432CBB0&0
ACPI\PNP0303\4&3432CBB0&0
Error
我没有 PS/2 键盘,因此状态显示错误,但如果已连接,则状态应该为 OK。
关于c# - 在 C# 中检测 PS/2 端口状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8475187/