【问题标题】:Global Hot Key Shortcut for application应用程序的全局热键快捷方式
【发布时间】:2011-04-09 06:57:43
【问题描述】:

我一直在尝试解决这个问题,我正在使用 WPF 来构建我的应用程序。我想为应用程序创建一个快捷键(例如,CTRL+ALT+3)。我已经尝试了我在互联网上找到的所有内容,但没有成功。

我想使用热键将应用程序最小化到稍后将创建的托盘图标。

现在的问题是我不知道如何在 Visual Studio 2010 上使用 C# WPF 来做到这一点。

【问题讨论】:

  • @CodeNaked:提供的链接中的解决方案不适用于我
  • @sikas - 哪个部分不起作用?似乎唯一缺少的是适当的路由命令。或者你还问如何在通知区域放一个图标?
  • @CodeNaked:这是我从那里的代码中得到的错误“当前上下文中不存在名称'MyAppCommands'”......关于它的任何想法?如果有帮助,我可以发布我的代码
  • 你昨天问了同样的问题。你为什么不按照当时的建议去做。你试过了吗?如果是这样,请告诉我们发生了什么以及您是如何失败的。

标签: c# wpf visual-studio-2010


【解决方案1】:

我已经在 WPF 应用程序中完成了这项工作。我在主窗口中使用了一些代码隐藏。

创建者是:

    public MainWindow()
    {
        InitializeComponent();

        this.AddHandler(Control.PreviewKeyDownEvent, new RoutedEventHandler(MyPreviewKeyDown), true);
    }

处理程序开始于:

    private void MyPreviewKeyDown(object sender, RoutedEventArgs e)
    {
        KeyEventArgs ke = e as KeyEventArgs;
        if (ke.Key == Key.Oem5 && ke.KeyboardDevice.Modifiers == ModifierKeys.Control)
        {

如果需要修饰键组合,可以使用如下表达式:

(int)ke.KeyboardDevice.Modifiers == (int)ModifierKeys.Control + (int)ModifierKeys.Alt

【讨论】:

  • 如何设置多个修饰符?例如:CTRL+ALT?什么是 Oem5 密钥?
  • 我已经用修饰符组合的代码更新了我的答案。 Oem5 是挪威语键盘上的竖线 (|),位于 1 键的左侧和 TAB 的上方。让我的盲人用户很容易找到。在其他键盘中可能会有所不同。
  • 谢谢,解决了一小部分。当应用程序获得焦点时,快捷方式有效。想在应用没有聚焦的时候使用,可以使用RegisterHotKey()!!
  • 哦,我以为你只是想在应用程序中使用快捷键。我从未尝试过创建在其他应用程序中有效的快捷键。现在我想知道我是否应该为我的应用程序这样做......
【解决方案2】:

使用 codeproject 中的 HookManager,然后使用它的 KeyDown 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多