我有一个简单的应用程序,它可以通过任何带有任何字母的热键执行任何代码,我的意思是:
C, Q, Ctrl-C, Alt-Q, Ctrl-Alt-Q
这个热键在我按下它时触发,并且在任何形式状态下(甚至最小化它的托盘)。但是,如果我需要为 SHIFT 或 CONTROL (ctrl) 等单个键注册热键 - 不,不起作用。这是代码:
//at form load
RegisterHotKey(this.Handle, 0, 0, (int)Keys.Shift); // doesnt works
RegisterHotKey(this.Handle, 1, 0, (int)Keys.C); //works
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312)
{
int id = m.WParam.ToInt32();
if (id < 2) //testing these two hotkeys
{
MessageBox.Show("trigger");
}
}
base.WndProc(ref m);
}
我真的需要为单次 shift 和单 ctrl 键注册全局热键,但似乎我不能这样做。我怎样才能做到这一点?我相信ProcessCmdKey只有在形式集中时才有效,所以它对我不起作用,但它会捕获ctrlor shiftorspace键。