我有一个简单的应用程序可以通过任何热键任意字母执行任何代码,我的意思是:
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);
}
我真的需要为单班和单键控制键注册全局热键,但似乎我不能这样做。我怎样才能做到这一点?我相信ProcessCmdKey
只有在关注表单时才有效,所以它对我不起作用,但它会捕获ctrl
或shift
或space
个键。
答案 0 :(得分:2)
您只能将修饰键与其他键结合使用。您不能单独使用修改键。我遇到的每种语言都是一样的。修饰符键修改 一个或多个其他键的操作。
即使它是可能的,也是不可取的,因为如果它是单独使用的,那么你将无法将该修饰键与任何其他键组合一起使用,因为它会被第一个动作很快吞噬掉因为它被按下了。