だから、私はC ++でそれをしなければならないと思います、誰かがこの問題について知っていますか?私はすでにどこでも検索していて、WindowsCEのキーボードフックに関する記事をいくつか見つけました。WindowsMobileはWindowsCEですよね?別の質問:どの無料のコンパイラ、Windows Mobile用のIDEを使用できますか?
2 に答える
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);
しかし、私はこれに反対することを強くお勧めします。このコードがWindowsMobileの将来のすべてのバージョンで機能し続けることは非常に疑わしいです。あなたが実際に求めているものを達成するための別の方法を検討してください。
無料のコンパイラやIDEに関する推奨事項があるとは言えません。Visual Studio for C / C ++以外のものは、常に私に多くのフラストレーションを引き起こします。これは、他のツールについての解説というよりも、私の習慣を反映していると思います。
http://www.naresh.se/2009/09/08/getkeyboardstate-mousehooks-not-available-in-windows-mobile/
上記のURLに従ってください。WindowsMobileとWindowsCEで動作するために必要なコードがあり、適切な説明と、さらに議論するためのフォーラムもあります...
他のユーザーの要求に応じて、コードがC#であると言うのを忘れました...