是否可以在录制按键时抑制Windows全局快捷键?
我有一个用c#编写的Windows窗体应用程序,并使用此库记录以后在宏中使用的按键。现在,当我记录Windows使用的组合键(即L Control + Win +右箭头以更改Win 10上的虚拟桌面)时,我希望我的应用程序能够记录它,但是当我记录时我避免使用它实际使用它这很烦人。
我有一个复选框,可以在点击事件
上启用键捕获m_KeyboardHookManager.KeyDown += HookManager_KeyDown;
HookManager_KeyDown就像这样
private void HookManager_KeyDown(object sender, KeyEventArgs e)
{
Log(string.Format("KeyDown \t\t {0}\n", e.KeyCode));
string [] sArr = new string [2];
if (keyBindingArea1.Text != "")
{
sArr[0] = keyBindingArea1.Text;
sArr[1] = string.Format("{0}", e.KeyCode);
keyBindingArea1.Text = string.Join("+", sArr);
}
else
{
keyBindingArea1.Text = string.Format("{0}", e.KeyCode);
}
}
显示comboText控件中的组合键。 (此代码直接取自附带的演示文稿。
现在录音效果很好,例如我按下L Control + Win,然后我释放按键并按下第三个键(即右箭头),这不会触发Windows快捷键,但让它像这一点。
感谢任何帮助。感谢
答案 0 :(得分:-1)
尝试使用事件的e.Handled
属性。如果将其设置为true
,它将终止密钥处理链。通常,处理链中的应用程序将无法获得它。我不确定这对于像虚拟桌面交换机这样的低级别Windows工作人员是否有用。
private void OnKeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
bool isThirdKey = //Some state evaluation to detect the third key was pressed
if (isThirdKey) e.Handled = true;
}