Обнаружение состояния порта PS / 2 в C # - PullRequest
2 голосов
/ 12 декабря 2011

это мой первый пост!

Я пытаюсь просто определить, есть ли клавиатура, подключенная к порту PS / 2 на моей машине. Идея состоит в том, что компьютер загружается, хотя, если он обнаруживает устройство USB или клавиатуру PS / 2, он перезагружается в режим администратора.

Я рассмотрел аспект USB, хотя мне не повезло найти документацию для порта PS / 2. В некоторых сообщениях говорится, что невозможно обнаружить клавиатуру, подключенную к порту PS / 2 после загрузки, хотя я просто хочу проверить, подключена ли она во время загрузки.

Я использую C # для своей программы, и поэтому любое решение на этом языке было бы очень полезно, хотя помощь на любом языке была бы полезной.

Большое спасибо

Euan

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

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 OK

Стандартная 101/102-клавишная или Microsoft Natural PS / 2 клавиатура 0000040C ACPI \ PNP0303 \ 4 & 3432CBB0 & 0 ACPI \ PNP0303 \ 4 & 3432CBB0 & 0 Ошибка

У меня нет клавиатуры ps / 2, поэтому статус выдает ошибку, но вы должны иметь статус OK, если он подключен

0 голосов
/ 12 декабря 2011

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

...