Горячие клавиши - C# (203565)
Формулировка задачи:
Мне нужен перехват событий с клавиатуры. Пожалуйста помогите.
Взял исходник отсуда Блокировать флажок на клавиатуре но тут очень много функции, а мне бы просто перехват с клавиатуры всей и все. Голая форма и перехват клавиатуры. Пожалуйста
Решение задачи: «Горячие клавиши»
textual
Листинг программы
public partial class MainForm : Form { const int WM_HOTKEY = 0x0312; [DllImport("user32.dll")] public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk); [DllImport("user32.dll")] public static extern bool UnregisterHotKey(IntPtr hWnd, int id); [Flags] internal enum KEY_MOD : uint { NOMOD = 0x0000, ALT = 0x0001, CTRL = 0x0002, SHIFT = 0x0004, WIN = 0x0008 } public MainForm() { InitializeComponent(); RegisterHotKey(this.Handle, 0, (uint)KEY_MOD.CTRL, (int)Keys.Q); } protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_HOTKEY: Keys key = (Keys)(((int)m.LParam >> 16) & 0x0000FFFF); int modifier = (int)m.LParam & 0x0000FFFF; if (key == Keys.Q && modifier == (uint)KEY_MOD.CTRL) { MessageBox.Show("Q + CTRL"); } break; } base.WndProc(ref m); } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { UnregisterHotKey(Handle, 0); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д