Всем Ку! В Данной теме расскажу вам как использовать горячие клавиши на С#.
Приступим к самой магии:
public class cKeyHook { /// <summary> /// Return /// </summary> /// <returns></returns> protected short GetKeyState(int dwKEY) { return cHook.GetKeyState(dwKEY); } protected short GetAsyncKeyState(int dwKEY) { return cHook.GetAsyncKeyState(dwKEY); } /// <summary> /// public bind /// </summary> /// <returns></returns> public bool isKeyState(int dwKEY) { bool dwState = false; try { dwState = this.GetKeyState(dwKEY) != 0 ? true : false; } catch (Exception Except) { Console.WriteLine("{0}", Except.Message); } return dwState; } public bool isAsyncKeyState(int dwKEY) { bool dwState = false; try { dwState = this.GetAsyncKeyState(dwKEY) != 0 ? true : false; } catch (Exception Except) { Console.WriteLine("{0}", Except.Message); } return dwState; } ~cKeyHook() {} }
Не забываем о импортах:
public class cHook { [DllImport("user32.dll")] public static extern short GetKeyState(int vKey); [DllImport("user32.dll")] public static extern short GetAsyncKeyState(int vKey); }
Зависимости:
using System; using System.Runtime.InteropServices;
Теперь перейдем к магии использования, в конструкторе калякаем указатель на наш класс:
cKeyHook KeyPressHook;
Обременяем форму программы таймером, или создаем поток. (на свое усмотрение...). На таймер или в поток биндим клавиши, рассмотрим на примере кнопки E (на англ).
int VK_E = 0x45;
if (KeyPressHook.isKeyState(VK_E)) { //Клавиша "E" Была НАЖАТА }
if (KeyPressHook.isAsyncKeyState(VK_E)) { //Клавиша "Е" ЗАЖАТА }
Думаю принцип работы и использования понятен. Удачи
СКАЧАТЬ