@lens2314

Как сделать вывод нажатой клавиши в label c#?

Как сделать подобие кейлогера, который будет после нажатия button1 один раз выводить полученную кнопку в label1 и записывать её в переменную, я пробовал использовать ReadKey
private void button1_Click(object sender, EventArgs e)
        {
            
            label1.Text = "Нажмите кнопку на которую будет работать макрос";
            label1.Visible = true;
            while (true)
            {
                ConsoleKeyInfo pressed;
                pressed = Console.ReadKey();
                

            }


Visual Studio ругается:
System.InvalidOperationException: "Невозможно считывать клавиши, когда любое приложение не имеет консоли или ввод данных на консоли был переадресован из файла. Попробуйте использовать Console.Read."
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 2
twobomb
@twobomb
То чувство когда до этого писал все в консоли и решил попробовать гуй....
Судя потому-что это должен быть кейлогер можно сразу пропустить вариант использования события keypress на форму, так как считывание будет только при активной форме и перейти к хукам.
Первое что попалось в гугле
Ответ написан
Комментировать
vabka
@vabka Куратор тега C#
Токсичный шарпист
1. Ругается не студия, а само твоё приложение
2. Там русским языком же написано, что Console.ReadKey() можно использовать только в консоли
3. Значит тебе нужно где-то сделать обработчик событий нажатий кнопки на клавиатуре, и обрабатывать их.

Почитай, что такое "машина состояний" - тебе нужно будет как раз её реализовать, чтобы при нажатии на button1 твоя форма переходила в состояние, когда пользователь наживает кнопку, а после нажатия на неё - выходило из этого состояния, и запоминало эту кнопку.

И никаких while(true) в обработчиках событий быть не должно - это просто повесит твоё приложение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы