3

我已经定义了一个HotKey Ctrl + Space来激活我的 Windows 窗体。当表单处理 thisHotKey时,系统不会看到此事件。随后有什么方法可以取消处理这些击键吗?(也就是说,注销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);
}
4

1 回答 1

0

创建一个全局布尔变量。将其值设置为 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
}

现在您只需设置此标志值来处理或取消处理您的击键。

于 2012-08-13T13:13:11.753 回答