在c#中检测PS/2端口状态

本文关键字:状态 PS 检测 | 更新日期: 2023-09-27 18:17:29

我试图简单地检测是否有一个键盘连接到我的机器上的PS/2端口。这个想法是,计算机将启动,尽管如果它检测到USB设备或PS/2键盘,它将重新启动到管理员模式。

我已经处理了USB方面,虽然我没有运气找到PS/2端口的任何文档。有些帖子说在启动后不可能检测到插入PS/2端口的键盘,尽管我只是想检查在启动时是否有一个连接。

我的程序使用的是c#,因此这种语言的任何解决方案都将非常有帮助,尽管任何语言的帮助都是有益的。

在c#中检测PS/2端口状态

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状态。

WMI应该允许您找到它。有一个很棒的实用程序,WMI代码创建器,它允许查找和打开不同的WMI类,并生成各种格式的代码,VBScript, c#等,当搜索类时,使生活变得容易得多。

作为一个通用的顶级参考,我也发现这个很有用:WMI任务:计算机硬件