HotKey Class
class HotKey
{
//如果函數執行成功,返回值不為0。
//如果函數執行失败,返回值為0。要得到擴展錯誤信息,調用GetLastError。
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd, //要定義熱鍵的窗口的句柄
int id, //定義熱鍵ID(不能與其他ID重覆)
KeyModifiers fsModifiers, //標示热键是否在按Alt、Ctrl、Shift、Windows等鍵時才會生效
Keys vk //定義熱鍵的内容
);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd, //要取消熱鍵的窗口的句柄
int id //要取消熱鍵的ID
);
//定義了輔助鍵的名稱(將數字轉變為字符以便記憶,也可去除此枚舉而直接使用數值)
[Flags()]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Ctrl = 2,
Shift = 4,
WindowsKey = 8
}
}
C# Form 應用
HotKey HotKey = new HotKey();
//註冊熱鍵Shift+S,Id號為100。HotKey.KeyModifiers.Shift也可以直接使用數字4來表示。
HotKey.RegisterHotKey(Handle, 100, HotKey.KeyModifiers.Shift, Keys.S);
//註冊熱鍵Ctrl+B,Id號為101。HotKey.KeyModifiers.Ctrl也可以直接使用數字2來表示。
HotKey.RegisterHotKey(Handle, 101, HotKey.KeyModifiers.Ctrl, Keys.B);
//註冊熱鍵Alt+D,Id號為102。HotKey.KeyModifiers.Alt也可以直接使用數字1來表示。
HotKey.RegisterHotKey(Handle, 102, HotKey.KeyModifiers.Alt, Keys.D);
HotKey.RegisterHotKey(Handle, 103, HotKey.KeyModifiers.Ctrl | HotKey.KeyModifiers.Alt, Keys.F);
HotKey.RegisterHotKey(Handle, hotKeyId, HotKey.KeyModifiers.Ctrl | HotKey.KeyModifiers.Alt, (Keys)Enum.Parse(typeof(Keys), show_key,true));