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

时间:2011-12-12 13:38:39

标签: c# keyboard port state detect

这是我的第一篇文章!

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

我已经处理了USB方面,虽然我没有找到PS / 2端口的任何文档。有些帖子表示在启动后无法检测到插入PS / 2端口的键盘,虽然我只想检查启动时是否有连接的键盘。

我正在使用C#作为我的程序,因此使用这种语言的任何解决方案都会非常有用,尽管任何语言的帮助都会有所帮助。

非常感谢

尤安

2 个答案:

答案 0 :(得分:1)

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人机接口设备 0000040C USB \ VID_03F0&安培; PID_0024 \ 6和; 1A939CC4&安培0安培; 1 USB \ VID_03F0&安培; PID_0024 \ 6和; 1A939CC4&安培0安培; 1 行

标准101/102-Key或Microsoft Natural PS / 2键盘 0000040C ACPI \ PNP0303 \ 4安培; 3432CBB0&安培; 0 ACPI \ PNP0303 \ 4安培; 3432CBB0&安培; 0 错误

我没有ps / 2键盘,因此状态会出错,但是如果有连接则应该有一个OK状态

答案 1 :(得分:0)

WMI应该允许您找到它。有一个很棒的实用程序WMI代码创建器http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8572,允许查找和打开不同的WMI类,并生成各种格式的代码VB脚本,C#等,在搜索类时使生活变得更容易 - 我希望这有帮助!

作为一般的顶级参考,我发现这也很有用http://msdn.microsoft.com/en-us/library/windows/desktop/aa394587(v=vs.85).aspx