使用RegisterHotKey注册多个热键

我找到了这段代码来注册一个热键:

[DllImport("user32.dll")] public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc); protected override void WndProc(ref Message m) { if (m.Msg == 0x0312) MessageBox.Show("Hotkey pressed"); base.WndProc(ref m); } public FormMain() { InitializeComponent(); //Alt + A RegisterHotKey(this.Handle, this.GetType().GetHashCode(), 1, (int)'A'); } 

它工作得很好,但我的问题是我想使用两个不同的快捷方式。 我知道第二个参数是id,所以我想我可以创建一个不同的id并在WndProc函数中添加一个新的if语句,但我不知道我会怎么做。

简而言之,我将如何创建第二个快捷方式?

谢谢,

  RegisterHotKey(this.Handle, this.GetType().GetHashCode(), 1, (int)'A') 

不要在这里使用GetHashCode()。 只需为您的热键编号,从0开始。没有任何混淆ID的危险,热键ID特定于每个句柄。 你将在WndProc()方法中获得id 。 使用m.WParam.ToInt32()来获取值:

 protected override void WndProc(ref Message m) { if (m.Msg == 0x0312) { // Trap WM_HOTKEY int id = m.WParam.ToInt32(); MessageBox.Show(string.Format("Hotkey #{0} pressed", id)); } base.WndProc(ref m); }