我已经定义了HotKey
Ctrl + Space 来激活我的Windows窗体。当表单处理此HotKey
时,系统不会看到此事件。有没有办法解开这些击键? (即取消注册HotKey
。)
以下是我的尝试:
private int tuyen_HotKey_Active = 1208132019;
private void Reg_HotKey(bool mode)
{
if (mode)
{
RegisterHotKey(this.Handle, tuyen_HotKey_Active, 2, 32); // Ctrl + Space
}
else
{
UnregisterHotKey(this.Handle, tuyen_HotKey_Active);
}
}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312) if(m.WParam.ToInt32() == tuyen_HotKey_Active)
{
// Do something here. I want Ctrl + Space keystroke to be
// unhandled here so that it can be seen by the system.
}
base.WndProc(ref m);
}
答案 0 :(得分:0)
创建一个全局bool变量。将其值设置为false。
在Windows KeyDown事件中检查bool变量是否为true返回方法。
如果要取消处理这些击键,请将其值设置为true,当您想要处理这些击键时,请将其值设置为false。
public bool flag = false;
public void Window_KeyDown(object sender, KeyEventArgs e)
{
if (flag)
return;
//.. Code Here something
}
现在您只需设置此标志值即可处理或取消您的击键。