通用Windows应用程序中的全局HotKey

时间:2017-07-23 09:15:46

标签: c# uwp win-universal-app windows-10-universal

所以我创建了一个UWP应用程序,它可以录制多个音频线并将录音保存到MP3文件中,用于游戏中的多行录音,我以后可以单独编辑(游戏音频,麦克风,游戏通讯,语音通讯)因为NVidia ShadowPlay / Share尚未支持此功能。我用VAC实现了这种多线设置。

我有一个用常规Windows WPF C#编写的这个工具的版本,我有一个系统范围的HotKey Ctrl+Alt+R,可以开始/停止录制,所以当我在全屏游戏中时,我可以开始/停止录制而不退出全屏模式(切换窗口焦点)

可以在UWP应用中实现触发某些应用内事件的全局(系统范围,应用程序窗口未关注) HotKey吗?我知道功能是不支持其他平台。但我只需要在Windows 10桌面上运行它,并且必须支持HotKey。或者我可以以任何其他方式为UWP Apps实现我的目标吗?

  

目标:系统范围的组合键可在UWP应用事件中触发,而无需切换窗口焦点并搞乱全屏游戏。

1 个答案:

答案 0 :(得分:1)

目前尚无法彻底解决此任务。 您面临UWP的两个限制,只能部分解决:

  • 生命周期:当UWP应用不集中精力时,它们将处于挂起状态。他们只是“阻塞”以消耗更少的资源(和电池)。对于移动设备来说,这是一个很棒的功能,但对您的项目而言却是个坏消息。您可以通过请求“ ExtendedExecutionSession”来解决此问题,如果“连接到墙头”

  • ,它将确保您的应用在失去焦点时永远不会进入睡眠状态。

  • 检测输入时没有焦点。在MSDN上明确指出UWP不支持键盘HOOKS(这是指SetWindowsHookEx)。他们重新发明了“ GetAsyncKeyState”,现在它仅在Windows聚焦时才有效。实际上,您可以在CoreWindow.GetAsyncKeyState()下找到它。 如果您只需要使用F键作为热键,您仍然可以做一些事情,例如“在最小化应用程序以激活功能时按F2键”。 使用Stefan Wick example。他解决了部分问题。 相反,如果您需要听很多键(或鼠标事件),则没有办法。您现在不能。

好奇心

UWP具有受限制的功能,其中之一称为InputObservation。 目前,该文件尚未记录,也无法实施(除非您是Microsoft的精选合作伙伴),但它应允许应用不受任何限制且不受最终目的地的限制,访问系统输入(键盘/鼠标..)。 我认为此功能是系统范围内输入检测的关键。 我找不到实现它的方法。

亲切问候