使用多个键盘时在UWP窗口中获取按键事件的键盘设备ID

问题描述 投票:0回答:1

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

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

替代方法是再次使用Raw Input API,但是那时我遇到的第一个问题是:我什至可以从UWP窗口中获取窗口消息吗?如果是这样:是否可以将其与Raw Input API结合使用以接收""消息?

要清楚:我不需要程序在Windows Store上或任何其他东西上,我只想拥有一个不错的UI。但是也许(可能吗?)用这种方式是不可能的:/

我刚刚想到的事情是,当将UWP应用程序窗口作为焦点时,尝试通过使用WM_INPUT全局监听事件,但这是一个温和的技巧,我希望有一种更好和更轻松的方式,例如RIDEV_INPUTSINK属性。

uwp raw-input deviceid
1个回答
0
投票
[很好的问题,恐怕您在UWP应用中键入时无法区分多个键盘。我发现您已经使用win32 api成功检测了键盘,借助桌面桥,您可以在UWP平台中使用相同的方法。换句话说,您可以为uwp应用程序进行桌面扩展,然后使用RIDEV_INPUTSINK将不同的键盘信息发送到主uwp应用程序。 Stefan的博客介绍了如何使用桌面扩展来检测全局热键。您可以在UWP中通过Google全球热键注册获取详细信息。
© www.soinside.com 2019 - 2024. All rights reserved.