个人代码库の全局快捷键
生活随笔
收集整理的這篇文章主要介紹了
个人代码库の全局快捷键
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
using System;using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows.Forms;
static class Hotkey
{
/*注:快捷鍵是通過消息觸發的,因此要重載WndProc函數,
* 在里面添加對快捷鍵回調消息的處理方法Hotkey.ProcessHotKey(m)。
* 注意,回調函數(要執行的方法,動作等)不加括號!
// protected override void WndProc(ref Message m)
// {
// base.WndProc(ref m);
// Hotkey.ProcessHotKey(m);
// }
*/
#region 系統api
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers fsModifiers, Keys vk);
[DllImport("user32.dll")]
static extern bool UnregisterHotKey(IntPtr hWnd, int id);
#endregion
/// <summary>
/// 注冊快捷鍵
/// </summary>
/// <param name="hWnd">持有快捷鍵窗口的句柄</param>
/// <param name="fsModifiers">組合鍵</param>
/// <param name="vk">快捷鍵的虛擬鍵碼</param>
/// <param name="callBack">回調函數</param>
public static void Regist(IntPtr hWnd, HotkeyModifiers fsModifiers, Keys vk, HotKeyCallBackHanlder callBack)
{
int id = keyid++;
if (!RegisterHotKey(hWnd, id, fsModifiers, vk))
throw new Exception("regist hotkey fail.");
keymap[id] = callBack;
}
/// <summary>
/// 注銷快捷鍵
/// </summary>
/// <param name="hWnd">持有快捷鍵窗口的句柄</param>
/// <param name="callBack">回調函數</param>
public static void UnRegist(IntPtr hWnd, HotKeyCallBackHanlder callBack)
{
foreach (KeyValuePair<int, HotKeyCallBackHanlder> var in keymap)
{
if (var.Value == callBack)
UnregisterHotKey(hWnd, var.Key);
}
}
/// <summary>
/// 快捷鍵消息處理
/// </summary>
public static void ProcessHotKey(System.Windows.Forms.Message m)
{
if (m.Msg == WM_HOTKEY)
{
int id = m.WParam.ToInt32();
HotKeyCallBackHanlder callback;
if (keymap.TryGetValue(id, out callback))
{
callback();
}
}
}
const int WM_HOTKEY = 0x312;
static int keyid = 10;
static Dictionary<int, HotKeyCallBackHanlder> keymap = new Dictionary<int, HotKeyCallBackHanlder>();
public delegate void HotKeyCallBackHanlder();
}
enum HotkeyModifiers
{
MOD_ALT = 0x1,
MOD_CONTROL = 0x2,
MOD_SHIFT = 0x4,
MOD_WIN = 0x8
}
/*附:虛擬鍵值表附:常用模擬鍵的鍵值對照表。
鍵盤鍵與虛擬鍵碼對照表
字母和數字鍵 數字小鍵盤的鍵 功能鍵 其它鍵
鍵 鍵碼 鍵 鍵碼 鍵 鍵碼 鍵 鍵碼
A 65 0 96 F1 112 Backspace 8
B 66 1 97 F2 113 Tab 9
C 67 2 98 F3 114 Clear 12
D 68 3 99 F4 115 Enter 13
E 69 4 100 F5 116 Shift 16
F 70 5 101 F6 117 Control 17
G 71 6 102 F7 118 Alt 18
H 72 7 103 F8 119 Caps Lock 20
I 73 8 104 F9 120 Esc 27
J 74 9 105 F10 121 Spacebar 32
K 75 * 106 F11 122 Page Up 33
L 76 + 107 F12 123 Page Down 34
M 77 Enter 108 -- -- End 35
N 78 - 109 -- -- Home 36
O 79 . 110 -- -- Left Arrow 37
P 80 / 111 -- -- Up Arrow 38
Q 81 -- -- -- -- Right Arrow 39
R 82 -- -- -- -- Down Arrow 40
S 83 -- -- -- -- Insert 45
T 84 -- -- -- -- Delete 46
U 85 -- -- -- -- Help 47
V 86 -- -- -- -- Num Lock 144
W 87
X 88
Y 89
Z 90
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
*/
?
?
?
轉載于:https://www.cnblogs.com/AsionTang/archive/2010/05/09/1885715.html
總結
以上是生活随笔為你收集整理的个人代码库の全局快捷键的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书笔记1 : program pa
- 下一篇: 【转载】CMenu自绘---钩子---去