WPF 使用全局键盘(快捷键)

方式一:使用SourceInitialized,在使用快捷键必须先注册快捷键,窗体启动并重写SourceInitialized这个时间发生在WPF窗体的资源初始化完毕,并且可以通过WindowInteropHelper获得该窗体的句柄用来与Win32交互。

    protected override void OnSourceInitialized(EventArgs e)
    {
        base.OnSourceInitialized(e);
        //注册快捷键热键
        HotKey k = new HotKey(this, HotKey.KeyFlags.MOD_ALT, System.Windows.Forms.Keys.D);
        k.OnHotKey += new HotKey.OnHotkeyEventHandeler(ScreenShotHotKey);
    }
    //快捷键启动事件
    private void ScreenShotHotKey()
    {
         MessageBox.Show("启动截图");
    }

方式二:Window_KeyDown,KeyEventArgs对象包含一个KeyStates属性,该属性反映触发事件的键的属性,KeyboardDevice属性为键 盘上的所有键提供了相同的信息,自然也提供了一个KeyboardDevice类的一个实例。它的属性包括当前是哪个元素具有焦点,以及当事件发生时按下了哪些修饰键(Modifiers)包括Shift、Ctrl、Alt键,并且使用位逻辑来检查它们的状态。


 
 

//快捷键
private void Window_KeyDown(object sender, KeyEventArgs e)
{
    /*
     if ((e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control&&e.Key==Key.D1)
      {
           //将要执行代码
      }
     */
      if (e.KeyStates == Keyboard.GetKeyStates(Key.D) && Keyboard.Modifiers == ModifierKeys.Alt)
      {
                MessageBox.Show("您按下了键");
      }
}
 

方式三:使用钩子,需要引用 System.Windows.Forms



    
        

你可能感兴趣的:(WPF,C#,wpf,c#)