• ベストアンサー

WM_MOUSEWHEELをフォーカスが別ウィンドウの時でも検出したい

WM_MOUSEWHEELをフォーカスが別ウィンドウの時でも検出したい! 現在VC++2005でWINAPIベースでマウス操作を取得するプログラムを作っています。 ホイール操作やマウスの左右クリックを検出しようとしていますが、 しかしWinAPIではWM_MOUSEWHEELに限らずマウスのクリックとかホイール操作を検出するには フォーカスがそのプログラムのウィンドウにないとダメでした。 私のプログラムではフォーカスがそのウィンドウにない時でも取得したいのですが、 そのようなことを行うことは可能なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんにちは。  一番簡単なのが、WH_MOUSE_LLのローレベルマウスフックです。  http://msdn.microsoft.com/ja-jp/library/cc430103.aspx  WH_MOUSE_LL/WH_KEYBOARD_LLについては、DLLも不要です。  それ以外であるならば、面倒ではありますが、DirectInputです。  http://msdn.microsoft.com/ja-jp/library/cc351732.aspx  強調レベルはDISCL_NONEXCLUSIVE | DISCL_BACKGROUNDで行います。  http://msdn.microsoft.com/ja-jp/library/cc351722.aspx  プログラムがコケた時、ローレベルマウスフックではフックがかかりっぱなしになって危険なのでWindowsの再起動が必要ですが、DirectInputの方はその様な問題がありません。

RockmanX
質問者

お礼

そういえばDirectXにそんな機能がありましたね! フラグ名も関数名ももはや完全に失念しており、とても助かりました! フック関数も便利そうなのでいずれ使わせていただきます!