【问题标题】:get state of modifier keys (orange, blue, shift) on MC91 and MC92获取 MC91 和 MC92 上修饰键(橙色、蓝色、shift)的状态
【发布时间】:2017-02-12 10:05:36
【问题描述】:

我们开发了一个全屏运行的应用程序,因此修饰符指示器不可见。

所以我现在需要一个解决方案来更新我们放在显示器上的图标,使其状态为橙色、蓝色和 shift。 有趣的是这个解决方案应该适用于 Omnii XT 10Omnii XT 15MC65WAP 3WAP 4MC91MC92WinMobile 6.06.5 CE6.

我使用移动设备 SDK V8.0_8.42743 获得了 Psion 设备的解决方案。它会迫使我根据操作系统将不同的 DLL 复制到设备上,但至少它可以正常工作。

在 MC65 上,我让它与摩托罗拉 EMDK 一起工作,用于 .NET v2.9(或 v2.8 - 都可以)。但是我希望这也适用于 MC91 和 MC92,但事实并非如此。那些实际上声称它确实: Release Notes - EMDK for .NET v2.8

但事实证明,这些设备中的 keybddr.dll 具有不同的功能。虽然我可以得到他们的名字,但我仍然没有他们的签名,所以我只能猜测和希望。

MC91

获取阿尔法模式 获取KeybdMode GetKeybdState 注册键盘通知 RegisterKeyStateNotification 设置AlphaMode 设置密钥状态 设置映射表 设置多映射表 注销键盘通知 UnregisterKeyStateNotification

MC65

GetKbdModiferState GetKeyStateEx GetValidKbdModifers SetKbdModifierState 设置密钥状态

MC91 和 MC92 剩下的唯一想法是自己分析 Windows 消息队列并记录不同的消息。但是,并非所有设备都发送橙色和蓝色的关键事件。我还必须跟踪消息序列,以启用、禁用、锁定这些修改键以及按下由这些键修改的键。这看起来工作量很大,而且很容易出错。不是我的老板愿意招待的。


问题:

有人可以建议一种方法来获取 MC91orangeblueshift 的状态吗? strong>MC92 并且理想情况下可以在上面列出的所有设备和操作系统上运行?

【问题讨论】:

  • 您已经做对了:将此问题提交给摩托罗拉/斑马技术支持。即使您有 keybddr.dll 的导出函数的名称,您仍然需要知道函数参数、类型和返回码。观察消息队列无济于事。硬件键盘状态不能通过标准 Windows 消息队列正常处理。如果没有密钥消息,也没有关于如何管理这些硬件密钥状态的文档,那么您将迷失方向。

标签: windows-mobile compact-framework windows-ce motorola-emdk modifier-key


【解决方案1】:

我不知道您列出的具体设备,但如果键是通过操作系统中的虚拟键模拟的,您可以尝试 GetAsyncKeyState https://msdn.microsoft.com/en-us/library/ms929204.aspx 并在需要检查其中一个键是否已关闭时调用它或者在轮询循环中,如果按下它们应该触发某种事件。 这应该适用于任何版本的 Windows CE/Mobile。

【讨论】:

  • 这不适用于橙色和蓝色,甚至不适用于橙色+键;除此之外,这仍然意味着我需要自己跟踪修改键的状态,并且代码的顺序取决于设备,因为蓝色和橙色不是标准按钮
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 2017-10-04
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
相关资源
最近更新 更多