【问题标题】:Get keyboard device ID for key event on UWP window when using multiple keyboards使用多个键盘时获取 UWP 窗口上的键事件的键盘设备 ID
【发布时间】:2020-07-18 17:57:06
【问题描述】:

目前我有一个用 C++ 编写的 Win32 桌面程序,它使用 Raw HID Input API(观察 WM_INPUT 消息的消息循环)来读取键事件并获取产生事件的特定键盘的句柄。当我使用多个键盘时,我需要此信息来根据键盘更改行为。

现在因为开发一个漂亮的 Win32 GUI 对我来说似乎很痛苦,所以我想使用 UWP UI。我试过KeyRoutedEventArgs.DeviceId,但这始终是一个空字符串("")。也许这是因为它仅在 Xbox 上受支持?

另一种方法是再次使用原始输入 API,但我遇到的第一个问题是:我什至可以从 UWP 窗口获取窗口消息吗?如果是这样:是否可以将其与原始输入 API 结合以接收WM_INPUT 消息?

明确一点:我不需要该程序出现在 Windows 应用商店或其他任何地方,我只想拥有一个漂亮的 UI。但也许(可能?)这是不可能的:/

我刚刚想到的事情是在 UWP 应用程序窗口聚焦时尝试使用 RIDEV_INPUTSINK 全局监听事件,但这是一个温和的 hack,我希望有像 @987654329 这样更好更简单的方法@ 属性将是。

【问题讨论】:

    标签: uwp raw-input deviceid


    【解决方案1】:

    好问题,恐怕您在输入 UWP 应用程序时无法区分多个键盘。我发现您已经使用 win32 api 成功检测键盘,在 desktop-bridge 的帮助下,您可以在 UWP 平台中使用相同的方式。换句话说,您可以为 uwp 应用程序制作桌面扩展,并使用AppService 将不同的键盘信息发送到主 uwp 应用程序。 Stefan 有一个博客解释了如何使用桌面扩展来检测全局热键。你可以谷歌UWP中的全局热键注册了解详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 2011-02-15
      • 2013-03-12
      • 2015-06-23
      • 2011-08-03
      • 1970-01-01
      相关资源
      最近更新 更多