aircrack字典文件下载,WPF之全局快捷键

WPF之全局快捷键

WPF(Windows Presentation Foundation)是微软推出的一种用户界面框架,使用它可以快速构建现代UI应用程序。在WPF中,可以使用快捷键来提升用户的体验。全局快捷键可以让用户在任何时候都可以执行相应的操作,本文将介绍在WPF中如何实现全局快捷键。

一、创建快捷键

在WPF中,可以使用InputBinding类创建快捷键。在XAML中创建快捷键的方法如下:

```

```

上述代码创建了一个全局快捷键Ctrl+S,当用户按下快捷键时,SaveCommand命令会被执行。在代码中创建快捷键的方法如下:

```

KeyGesture keyGesture = new KeyGesture(Key.S, ModifierKeys.Control);

InputBinding inputBinding = new InputBinding(SaveCommand, keyGesture);

this.InputBindings.Add(inputBinding);

```

上述代码实现的功能与XAML代码中相同。需要注意的是,使用代码创建快捷键时,应该在Window的Loaded事件中添加快捷键,否则InputBindings集合可能还未创建。

二、全局快捷键

有时候需要在应用程序处于后台运行的情况下,用户仍然可以使用快捷键来执行相应的操作。为了实现这一点,需要将快捷键注册到系统热键中,而不是仅仅在应用程序中注册。

需要添加一个Win32 API的DllImport,以便在WPF应用程序中调用RegisterHotKey和UnregisterHotKey。

```

[DllImport("User32.dll")]

[return: MarshalAs(UnmanagedType.Bool)]

private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);

[DllImport("User32.dll")]

[return: MarshalAs(UnmanagedType.Bool)]

private static extern bool UnregisterHotKey(IntPtr hWnd, int id);

```

接下来,在WPF应用程序的MainWindow中重载OnSourceInitialized方法,在这个方法中注册全局热键:

```

protected override void OnSourceInitialized(EventArgs e)

{

base.OnSourceInitialized(e);

IntPtr handle = new WindowInteropHelper(this).Handle;

HwndSource source = HwndSource.FromHwnd(handle);

source.AddHook(HwndHook);

const int HOTKEY_ID = 9000;

const uint VK_F1 = 0x70;

if (!RegisterHotKey(handle, HOTKEY_ID, 0, VK_F1))

{

//当热键注册失败时,输出一条错误信息

MessageBox.Show("注册热键失败!");

}

}

private IntPtr HwndHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)

{

const int WM_HOTKEY = 0x0312;

switch (msg)

{

case WM_HOTKEY:

switch (wParam.ToInt32())

{

case 9000:

//当接收到注册的热键时,执行相应的操作

MessageBox.Show("接收到全局热键!");

break;

}

break;

}

return IntPtr.Zero;

}

```

上述代码注册了一个全局热键,当用户按下F1键时,会触发HwndHook方法。在这个方法中,可以执行相应的操作。需要注意的是,在窗口关闭前,应该将热键从系统中注销。

```

protected override void OnClosing(CancelEventArgs e)

{

base.OnClosing(e);

IntPtr handle = new WindowInteropHelper(this).Handle;

const int HOTKEY_ID = 9000;

UnregisterHotKey(handle, HOTKEY_ID);

}

```

三、总结

在WPF中,使用快捷键可以提高用户的体验。而全局快捷键则可以让应用程序在后台运行时仍然对用户可见。通过调用Win32 API的RegisterHotKey和UnregisterHotKey方法,可以在WPF中实现全局快捷键。

购买后如果没出现相关链接,请刷新当前页面!!!
链接失效的请留言 ,我看见了就补上!!!

网站内容来源于互联网,我们将这些信息转载出来的初衷在于分享与学习,这并不意味着我们站点对这些信息的观点或真实性作出认可,我们也不承担对这些信息的责任。
适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用!

点赞(50) 打赏

评论列表 共有 2 条评论

倾尽一生去爱你 1年前 回复TA

气就是一种坚韧;正因为它是一种坚韧,才使我们具有任何形式的自我否定和自我战胜的能力。因而,正是借助于这上点,勇气也多少与德行发生了关系。

华年乱了谁的浮生ˉ 1年前 回复TA

我拜托你,不要再出来吓人了,要不然这世界就要被灭亡了。

立即
投稿
发表
评论
返回
顶部