Чтение HID прокси-карты в приложении Магазина Windows
Я пытаюсь получить PoC, где я пытаюсь аутентифицировать пользователя на основе значения его HID-карты. У меня нет конкретного API для читателя. Считыватель выводит обычный номер карты путем эмуляции клавиатуры.
PoC позволяет пользователю проходить аутентификацию через имя пользователя / пароль или через HID-прокси-карту. Для упрощения вещей я хотел использовать скрытый TextBox
для которого читается значение из HID и запускается соответствующий веб-сервис из TextChanged
событие.
Я не смог этого сделать. Может кто-нибудь посоветовать, как это можно сделать, я очень новичок в среде.Net.
1 ответ
При использовании этой версии устройства для чтения (с эмуляцией клавиатуры) вам потребуется некоторая форма управления вводом текста (например, TextBox) для захвата текста, отправляемого виртуальной клавиатурой. Проблема с вашим подходом использования скрытого TextBox состоит в том, что он не будет фокусироваться, пока виртуальная клавиатура "печатает" идентификатор карты.
Таким образом, вам нужно будет перехватить событие KeyDown в любом элементе пользовательского интерфейса, на котором вы ожидаете идентификатор карты. Например, если у вас есть окно, а у TextBox (или другого элемента, который использует события KeyPress) нет фокуса, вы можете попытаться перехватить событие KeyPress на уровне окна:
<Window ...
KeyDown="onKeyDownHandler"
>
Соответствующий метод-обработчик будет выглядеть так:
private void onKeyDownHandler(object sender, KeyEventArgs e) {
// e.Key will give you the pressed key
}
Таким образом, используя этот обработчик, вы сможете собирать все виртуальные нажатия клавиш, которые отправляются считывателем RFID. Так что все, что вам нужно сделать, это собрать их и перевести их в персонажей.
ОБНОВИТЬ:
Эта брошюра о продукте предполагает, что версия считывателя с виртуальной клавиатурой может быть настроена для добавления нажатий клавиш до и после идентификатора карты. Таким образом, вы сможете обнаружить и замаскировать ввод, отправленный этим считывателем RFID, даже если основное внимание уделяется полям ввода текста для имени пользователя или пароля, добавив код символа / контрольного ключа, который не может встречаться в имени пользователя / пароле перед идентификатором карты., Затем вы можете перехватить событие KeyDown в обоих текстовых полях и - после получения этого управляющего кода клавиши - вы можете использовать все нажатия клавиш, отправленные виртуальной клавиатурой. Помечая эти ключевые штрихи e.Handled = true;
, вы должны быть в состоянии скрыть их от текстовых полей.
В качестве альтернативы, вы можете использовать последовательную версию (например, виртуальный COM-порт USB) этого считывателя. Если это вариант... Вы можете получить идентификаторы карт через последовательное соединение вместо виртуальной клавиатуры. В результате вы легко сможете различить пользовательский ввод и RFID-считыватель, поскольку оба будут поступать на разные интерфейсы связи.