C# WPF键预览窗口键和第二个键
我正在为Windows7在C#4.5中实现一个WPF应用程序,我希望能够在用户按下Windows键和C时捕获事件 我已经实现了OnPreviewKeyDownEvent,它会按预期触发(在我的代码中,我有一些其他事件会触发其他按键),但是似乎只有Windows按键触发,而不是第二次按键。我可以从debug.Writeline命令中看到这一点 你知道如何捕获windows键和C吗C# WPF键预览窗口键和第二个键,c#,wpf,onkeydown,C#,Wpf,Onkeydown,我正在为Windows7在C#4.5中实现一个WPF应用程序,我希望能够在用户按下Windows键和C时捕获事件 我已经实现了OnPreviewKeyDownEvent,它会按预期触发(在我的代码中,我有一些其他事件会触发其他按键),但是似乎只有Windows按键触发,而不是第二次按键。我可以从debug.Writeline命令中看到这一点 你知道如何捕获windows键和C吗 private void OnPreviewKeyDownEvent(object sender, KeyEventA
private void OnPreviewKeyDownEvent(object sender, KeyEventArgs e)
{
if ((e.Key == Key.C && (Keyboard.Modifiers & ModifierKeys.Windows) == ModifierKeys.Windows) && e.IsDown)
Messagbox.Show("Pressed1");
if (e.Key == Key.C && (Keyboard.IsKeyDown(Key.LWin) || Keyboard.IsKeyDown(Key.RWin)))
Messenger.Default.Send(new RightClickMessage())
Messagbox.Show("Pressed2");
System.Diagnostics.Debug.WriteLine(e.Key + " " + Keyboard.IsKeyDown(Key.LWin) + " ");
}
非常感谢您的帮助。以下是检测Win+C的方法 或
我认为您需要使用windows api并制作一个钩子来拦截windows密钥
private void OnPreviewKeyDownEvent(object sender, KeyEventArgs e)
{
if ((Keyboard.IsKeyDown(Key.LWin) || Keyboard.IsKeyDown(Key.RWin)) && Keyboard.IsKeyDown(Key.C))
{
// Win + C
}
}
private void OnPreviewKeyDownEvent(object sender, KeyEventArgs e)
{
if (((Keyboard.GetKeyStates(Key.LWin) & KeyStates.Down) == KeyStates.Down ||
(Keyboard.GetKeyStates(Key.RWin) & KeyStates.Down) == KeyStates.Down) &&
(Keyboard.GetKeyStates(Key.C) & KeyStates.Down) == KeyStates.Down)
{
// Win + C
}
}