Top.Mail.Ru
Уведомления
Очистить все

Visual Studio, перехватить нажатие клавиши на клавиатуре (C#)

(@asterk)
Level 1

Всем привет, подскажите можно ли перехватить нажатие любой клавиши (какая именно клавиша задается в программе) в консольном приложении на C#? То есть пользователь нажимает кнопку, я в своем приложении это вижу и могу выполнить какие-то действия.

Цитата
Создатель темы Размещено : 16.01.2025 10:57
(@asterk)
Level 1

Забыл самое важное написать - приложение должно работать не в фокусе, то есть в "фоновом" режиме.

В общих чертах идея такая, что в процессе набора текста (например в ворде) мое приложение помогает быстрее производить набор, анализируя текущую нажимаемую кнопку клавиатуры.

ОтветитьЦитата
Создатель темы Размещено : 16.01.2025 10:59
Aveal
(@aveal)
Top level Admin

Привет, набросал по-быстрому (диагностирует нажатие 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");
    }
}

 

изображение
ОтветитьЦитата
Размещено : 16.01.2025 21:52
(@asterk)
Level 1

@aveal вот спасибо, огромный респект Вам! Сходу работает)))

ОтветитьЦитата
Создатель темы Размещено : 17.01.2025 12:33
(@asterk)
Level 1

Еще один вопрос, я так понял это:

const int VK_CTRL = 0x11;

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

ОтветитьЦитата
Создатель темы Размещено : 17.01.2025 12:53
Aveal
(@aveal)
Top level Admin

Запись от: @asterk

@aveal вот спасибо, огромный респект Вам! Сходу работает)))

Отлично)

 

ОтветитьЦитата
Размещено : 17.01.2025 19:26
Aveal
(@aveal)
Top level Admin

Запись от: @asterk

Еще один вопрос, я так понял это:

const int VK_CTRL = 0x11;

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

Тут - https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.

 

ОтветитьЦитата
Размещено : 17.01.2025 19:26
(@asterk)
Level 1

Попробовал с разными клавишами, полет нормальный )

ОтветитьЦитата
Создатель темы Размещено : 18.01.2025 12:02
Поделиться: