【问题标题】:ctrl hotkey for my application我的应用程序的 ctrl 热键
【发布时间】:2011-04-17 00:36:39
【问题描述】:

我有一个 .net C# winforms 应用程序,我需要添加热键支持,但我想要的不仅仅是标准的RegisterHotKey 功能,我希望能够支持像 ctrl-ctrl(就像在 Google 桌面中一样)。

请告诉我如何实现这一点。

编辑:

你没看错。 即使我的应用程序没有聚焦,我也希望热键能够工作,例如最小化到托盘。

【问题讨论】:

    标签: c# .net winforms winapi hotkeys


    【解决方案1】:

    您可以通过轮询Console.KeyAvailable 然后使用Console.ReadKey 读取来获取单个键(如 ctrl 键),但这不会告诉您他们何时松开键。您可能必须捕获WM_KEYDOWN 消息并在每个键处调用GetAsyncKeyState,以便确定哪些特殊键(控制、移位、alt 等)当前处于关闭状态。

    至少,那是我记得在写游戏时所做的事情。

    【讨论】:

      【解决方案2】:

      如果您使用的是 winforms 和 c#,则最好使用 keydown 或 keypress 事件。并在表单上的模块级变量中记录以前的按键。 然后,当用户按下 ctl 时,会触发一个 keypress 事件,然后您查看之前的 keypress 值,如果这也是 ctl,那么您已经找到了您正在寻找的组合键。

      【讨论】:

        【解决方案3】:

        您可能必须安装keyboard hook。现在 .NET 4.0 支持将多个版本的 CLR 加载到单个进程中,这已经不像以前那么糟糕了,但仍然不受欢迎。

        【讨论】:

        • 键盘挂钩非常好,直到涉及将我的程序检测为键盘记录器的防病毒和安全产品:-(
        猜你喜欢
        • 2015-03-03
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        • 2014-01-13
        • 1970-01-01
        • 2019-04-29
        • 2011-04-15
        • 2016-02-10
        相关资源
        最近更新 更多