Всем привет, подскажите можно ли перехватить нажатие любой клавиши (какая именно клавиша задается в программе) в консольном приложении на C#? То есть пользователь нажимает кнопку, я в своем приложении это вижу и могу выполнить какие-то действия.
Забыл самое важное написать - приложение должно работать не в фокусе, то есть в "фоновом" режиме.
В общих чертах идея такая, что в процессе набора текста (например в ворде) мое приложение помогает быстрее производить набор, анализируя текущую нажимаемую кнопку клавиатуры.
Привет, набросал по-быстрому (диагностирует нажатие Control):
using System; using System.Runtime.InteropServices; [DllImport("user32.dll")] static extern short GetAsyncKeyState(Int32 vKey); const int VK_CTRL = 0x11; while (true) { short keyStatus = GetAsyncKeyState(VK_CTRL); if ((keyStatus & 1) == 1) { Console.WriteLine("Ctrl key is pressed"); } }
@aveal вот спасибо, огромный респект Вам! Сходу работает)))
Еще один вопрос, я так понял это:
const int VK_CTRL = 0x11;
численный код для клавиши контрол, подскажите пожалуйста, где коды для других клавиш можно посмотреть.
Еще один вопрос, я так понял это:
const int VK_CTRL = 0x11;численный код для клавиши контрол, подскажите пожалуйста, где коды для других клавиш можно посмотреть.
Тут - https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
Попробовал с разными клавишами, полет нормальный )