Всем привет, подскажите можно ли перехватить нажатие любой клавиши (какая именно клавиша задается в программе) в консольном приложении на 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.
Попробовал с разными клавишами, полет нормальный )
