Sim*_*dot 7 c# hotkeys 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');
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但我的问题是我想使用两个不同的快捷方式.我知道第二个参数是id,所以我想我可以创建一个不同的id并在WndProc函数中添加一个新的if语句,但我不知道我会怎么做.
简而言之,我将如何创建第二个快捷方式?
谢谢,
Han*_*ant 15
RegisterHotKey(this.Handle, this.GetType().GetHashCode(), 1, (int)'A')
Run Code Online (Sandbox Code Playgroud)
不要在这里使用GetHashCode().只需为您的热键编号,从0开始.没有任何混淆的危险,热键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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7395 次 |
| 最近记录: |