我们开发了一个全屏运行的应用程序,所以修饰符指示器是不可见的。
所以我现在需要一个解决方案来更新我们放在显示器上的图标,使其处于橙色,蓝色和shift状态。有趣的部分是这个解决方案应该在Omnii XT 10, Omnii XT 15, MC65, WAP 3, WAP 4, MC91和6.5和CE6中工作。
我使用移动设备SDK V8.0_8.42743获得了Psion设备的解决方案。这将迫使我根据操作系统将不同的dll复制到设备上,但至少它工作得很好。
在MC65上,我让它与摩托罗拉EMDK的。net v2.9(或v2.8 -任何工作)一起工作。然而,我预计这也适用于MC91和MC92,但它没有。这些人实际上是这么说的:发行说明- EMDK for .NET v2.8
然而,事实证明,这些设备中的keybddr.dll具有不同的功能。虽然我知道他们的名字,但我还没有他们的签名,所以我只能猜测和希望。
MC91
<>之前GetAlphaModeGetKeybdModeGetKeybdStateRegisterKeyboardNotificationRegisterKeyStateNotificationSetAlphaModeSetKeyStateSetMappingTableSetMultiMappingTableUnregisterKeyboardNotificationUnregisterKeyStateNotification之前MC65
<>之前GetKbdModiferStateGetKeyStateExGetValidKbdModifersSetKbdModifierStateSetKeyState之前留给MC91和MC92的唯一想法是自己分析Windows消息队列并记录不同的消息。然而,并不是所有的设备都发送橙色和蓝色的键事件。我还必须跟踪消息序列,以启用、禁用、锁定这些修改键,并按下由这些键修改的键。这看起来工作量很大,而且很容易出错。我的老板可不愿意这么做。
问题:
有人能建议一种方法来获得橙色, 蓝色和移动在MC91和MC92上的状态,理想的是在上面列出的所有设备和操作系统上工作?
我不知道你列出的具体设备,但如果键是通过操作系统中的虚拟键模拟的,你可以尝试GetAsyncKeyState https://msdn.microsoft.com/en-us/library/ms929204.aspx,并在需要检查其中一个键是否down或在轮询循环中调用它,如果按下它们应该触发某种事件。这应该适用于任何版本的Windows CE/Mobile。