поймать ввод от считывателя магнитных карт в переменную - PullRequest
1 голос
/ 24 марта 2011

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

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

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

Ответы [ 2 ]

4 голосов
/ 24 марта 2011

Если это приложение 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;
        }
    }

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

1 голос
/ 24 марта 2011

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

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

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

...