Поймать ввод от считывателя магнитных карт в переменную

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

К сожалению, фокус на поле текстового поля не сработает, потому что я должен сделать его меткой вместо текстового поля. Таким образом, мне нужен способ перехватить ввод с USB-устройства в переменную или метку.

Кто-нибудь знает класс.NET, который я мог бы использовать, чтобы сделать это или какие-нибудь лучшие идеи?

2 ответа

Решение

Я не думаю, что в любом случае вы сможете предотвратить ручной ввод данных пользователем. Я подозреваю, что кард-ридер у вас эмулирует клавиатуру. Таким образом, чтобы иметь возможность читать с устройства чтения, вы должны получать ввод с клавиатуры, а ввод с клавиатуры означает, что пользователь может вводить все, что ему нравится.

Возможное решение - заменить кардридер на тот, который использует API для чтения с карточек.

Если получить лучший кард-ридер не вариант, я думаю, что лучший способ сделать это - иметь кнопку. Когда кнопка нажата, откройте новую форму, содержащую предоставленный код @Bala R. Но кроме того, закройте форму в течение 1 секунды после ввода первой клавиши. Это предотвратит вмешательство пользователя вручную, но предоставит читателю достаточно времени для завершения.

Если это приложение winforms, вы можете сделать

    private void Form1_Load(object sender, EventArgs e)
    {
        KeyPreview = true;
        KeyPress += Form1_KeyPress;
    }

    private bool inputToLabel = true;
    void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (inputToLabel)
        {
            label1.Text = label1.Text + e.KeyChar;
            e.Handled = true;
        }
        else
        {
            e.Handled = false;
        }
    }

и пока окно имеет фокус, символы нажатия клавиш будут переходить к тексту метки.

Другие вопросы по тегам