Глобальная клавиатура крюк в Windows Mobile 5 или выше (платформа смартфона), как? - PullRequest
0 голосов
/ 26 июня 2009

Итак, я думаю, я должен сделать это на C ++, кто-нибудь знает об этой проблеме? Я уже искал везде, и я нашел несколько статей о клавиатуре на Windows CE, Windows Mobile это Windows CE, не так ли? Другие вопросы: какой бесплатный компилятор, Ide для Windows Mobile, я мог бы использовать?

Ответы [ 2 ]

1 голос
/ 26 июня 2009

SetWindowsHookEx не поддерживается ни в одной версии WindowsCE (читай: для мобильных устройств). Крючки вообще не поддерживаются, на самом деле.

Однако, если вы хотите использовать недокументированные / неподдерживаемые API-интерфейсы, вы можете извлечь SetWindowsHookEx из coredll.dll и вызвать его так же, как и в правильной Windows. Вы хотите WH_KEYBOARD_LL, который немного погуглит, говорит, что 20.

Вам на самом деле потребуется извлечь указатели на следующие методы: SetWindowsHookEx , CallNextHookEx и UnhookWindowsHookEx .

Ваш код будет похож (это не проверено):

//myHook.dll
LRESULT myLowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
  //You'll need to pull a reference to CallNextHookEx out of coredll as well
  if(nCode < 0) return CallNextHookEx(nCode, wParam, lParam);

  KBDLLHOOKSTRUCT data = *((PKBDLLHOOKSTRUCT)lParam);

  //Do something with data

  return CallNextHookEx(nCode, wParam, lParam);
}

//Main Code, which ignores all the nasty function pointers you'd ACTUALLY have to use to do this
...
HHOOK hook = SetWindowsHookEx(WH_KEYBOARD_LL, pMyLowLevelKeyboardProc, hMyHookDll, 0);
...
//Some point in the future
UnhookWindowsHookEx(hook);

Однако я бы настоятельно рекомендовал против этого. Я очень сомневаюсь, что этот код будет продолжать работать для всех будущих версий Windows Mobile. Подумайте о другом способе достижения того, что вам действительно нужно.

Не могу сказать, что у меня есть какие-либо рекомендации для бесплатных компиляторов или IDE. Что-нибудь кроме Visual Studio для C / C ++ всегда вызывает у меня большое разочарование. Я думаю, что это скорее отражение моих привычек, чем комментарий к любым другим инструментам.

0 голосов
/ 09 сентября 2009

http://www.naresh.se/2009/09/08/getkeyboardstate-mousehooks-not-available-in-windows-mobile/

Следуйте приведенному выше URL. Он имеет необходимый код для работы в Windows Mobile и Windows CE, а также имеет хорошее объяснение, а также форум для дальнейшего обсуждения ...

Забыл сказать, что код написан на C #, как этого требуют некоторые другие пользователи ...

...