2009-10-21 5 views
1

Я пытаюсь использовать кнопку оборудования на своем Motorola MC75 для выполнения функции события кнопки, которое я создал в форме. Я попытался использовать класс WindowsCE.Forms.HardwareButton, однако я не могу заставить его работать. Я даже не могу захватить какое-либо событие KeyDown в форме. Я установил событие, и KeyPreview имеет значение true в форме, однако событие никогда не запускается ни на одной аппаратной кнопке, которую я нажимаю на устройство во время отладки.HardwareButton в Windows Mobile 6

Любые предложения?

Заранее спасибо.

ответ

0

Аппаратное управление кнопками обычно зависит от устройства. Motorola/Symbal имеют SDK для своих устройств, но мне не удалось найти ссылку на него. Как правило, на устройствах, которые вы должны были бы включить PInvoke, будет определенная DLL-производителем, чтобы читать и управлять аппаратными кнопками.

1

Существует встроенная функция пересылки всех ключей в ваше приложение.

[DllImport("coredll.dll", SetLastError = true)] 
static extern bool AllKeys(bool bAllKeys); 

See this MSDN blog для примера на C++. Вы можете получать события KeyDown и KeyUp в форме Windows с помощью AllKeys. Он работает на любом устройстве Windows Mobile 2003.

+0

Хм, у этого были почти все ключи, которые нужно захватить на событии KeyDown, однако он все еще не получил 2 ключа, которые я хотел. Это желтые кнопки на боковой панели устройства. Есть идеи? –

+0

Работает ли программа клина сканера? Попробуйте закрыть программу клина сканера, а затем проверьте, не получено ли событие KeyDown для желтых кнопок сканера. Другой вариант - использовать SetWindowsHookEx (недокументированный). В Google есть много примеров. Я видел, как SetWindowsHookEx сбой на некоторых устройствах, если есть еще одна программа, запускающая hook. В большинстве случаев программа клина сканера - это программа, при этом другой крючок открывается. –

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