2

Мы разрабатываем приложение, которое работает в полноэкранном режиме, поэтому индикаторы модификатора не видны.получить состояние ключей модификатора (оранжевый, синий, сдвиг) на MC91 и MC92

Так что теперь мне нужно решение для обновления значков, которые мы помещаем на дисплей, с оранжевым, синим и сдвигом. Забавная часть это решение должно работать на Omnii XT 10, Omnii XT 15, MC65, WAP 3, WAP 4, MC91 и MC92 в WinMobile 6,0 и 6.5 и CE6.

Я получил решение для устройств Psion, используя SDK мобильных устройств V8.0_8.42743. Это заставит меня копировать разные DLL на устройства в зависимости от ОС, но по крайней мере хорошо работает.

На MC65 я получаю его для работы с Motorola EMDK для .NET v2.9 (или v2.8 - либо работает). Однако я ожидал, что это также будет работать на MC91 и MC92, но это не так. Те, кто на самом деле утверждают, что он делает: Release Notes - EMDK for .NET v2.8

Однако выясняется keybddr.dll в этих устройствах имеет различные функции. Хотя я могу получить их имена, у меня все еще нет их подписи, поэтому я могу только догадываться и надеяться.

MC91

 
GetAlphaMode 
GetKeybdMode 
GetKeybdState 
RegisterKeyboardNotification 
RegisterKeyStateNotification 
SetAlphaMode 
SetKeyState 
SetMappingTable 
SetMultiMappingTable 
UnregisterKeyboardNotification 
UnregisterKeyStateNotification 

MC65

 
GetKbdModiferState 
GetKeyStateEx 
GetValidKbdModifers 
SetKbdModifierState 
SetKeyState 

Единственная идея оставила для MC91 и MC92 является анализ очереди сообщений Windows, сам и записывать различные сообщения. Однако не все устройства отправляют ключевые события для оранжевого и синего. Я также должен был бы отслеживать последовательность сообщений для включения, отключения, блокировки этих клавиш-модификаторов и для нажатия клавиши, измененной этими клавишами. Это похоже на большую работу и очень подвержено ошибкам. Не то, что мои боссы готовы развлекать.


Вопрос:

Может кто-то предложить способ получить состояние оранжевый, синий и сдвига на MC91 и MC92 и идеально один, который будет работать на всех устройствах и ОС, перечисленных выше?

+0

Вы уже направо: обратитесь к поддержке мотороли/зебры.Даже если у вас есть имена экспортированных функций keybddr.dll, вам все равно нужно знать аргументы, типы и коды возврата. Наблюдение за очередью сообщений не поможет. Аппаратные состояния клавиатуры не обрабатываются обычно через стандартную очередь сообщений Windows. Если нет ключевого сообщения и нет документации о том, как управлять этими состояниями аппаратного ключа, вы теряетесь. – josef

ответ

0

Я не знаю конкретных устройств, которые вы перечисляете, но если клавиши эмулируются с помощью виртуальных ключей в ОС, вы можете попробовать GetAsyncKeyState https://msdn.microsoft.com/en-us/library/ms929204.aspx и вызвать его, когда вам нужно проверить, не нажата ли одна из этих клавиш или в цикле опроса, если нажатие на них должно инициировать какое-то событие. Это должно работать с любой версией Windows CE/Mobile.

+0

это не работает для Orange и Blue и даже для оранжевого + клавиши; кроме того, это все равно означало бы, что мне нужно будет отслеживать состояние ключей модификатора самостоятельно, а последовательность кодов зависит от устройства, так как Blue и Orange не являются стандартными кнопками – Holly

Смежные вопросы