J4N*_*J4N 10 .net c# wpf keyboard-shortcuts shortcut
我有一个应用程序(C#4.0-WPF),它是隐藏的,可以通过单击系统托盘图标或我创建的其他框架(左侧和最顶部停靠的小框架)显示.
我的客户希望添加一种新的方式来显示应用程序:当按下"F"键(例如F9)时.
如果用户在应用程序不是当前窗口或未关注时按下此键,我如何知道我的应用程序?
Cod*_*aos 18
如果您只需要一些全局热键,则全局键盘挂钩不是正确的解决方案.
使用全局键盘钩子WH_KEYBOARD
意味着您的dll将被注入到接收按键的每个进程中.它不应该在托管代码中使用,因为CLR相对较重并且可能导致版本冲突.
此代码注入对防病毒软件也会产生怀疑,这可能会阻止它.
使用低级键盘挂钩WH_KEYBOARD_LL
是托管代码的更好选择,因为它处理您自己的应用程序中的键盘事件.仍然需要每个键盘事件都由您的线程处理.
这会增加按下按键和接收按键的目标应用程序之间的时间.
如果CPU优先级高于您的应用程序的应用程序使其占用CPU时间,那么这一点尤其糟糕.在这种情况下,延迟可以达到几秒钟,将许多按键聚集在一起.一些(写得不好的)游戏就像那样工作,在这种情况下变得无法播放.
Windows API函数RegisterHotKey
是用于全局热键的正确函数.
Windows将为您进行过滤,并且仅在已按下其中一个注册密钥时通知您的应用程序,因此您不必处理所有这些.
正如您计划的那样,使用简单的F-Key作为全局热键是有问题的,因为它经常与具有焦点的应用程序的本地热键发生冲突.因此,您应该使全局热键可配置,以便用户可以避免与常用应用程序发生冲突.
归档时间: |
|
查看次数: |
8726 次 |
最近记录: |