顧客管理システムみらいラボお問い合わせ採用情報ブログ・コラム2019.07.03【C#】マウスフックキーボードフックの記事にも記載しましたが、Windowsシステムは、メッセージキューにメッセージが蓄積され、メッセージループによってイベントが処理されていきます。マウスを左クリックした、マウスを動かしたなどのイベントをwindowが非アクティブ状態で取得したい場合は、マウスのイベントをフックする必要があります。以下にサンプルソースを掲載します。サンプルソースnamespaceなどは適宜読み替えてください。イベントをフックする場合は、DLL(user32.dll)にあるSetWindowsHookEx関数を使用して指定します。この関数の引数の意味は下記のとおりです。第1引数フックするイベントの種類マウスのイベントをフックする場合は、WH_MOUSE_LL(14)を指定する。イベントが発生した時に実行される関数。現在実行中のハンドルを渡す。0を指定すると、すべてのスレッドでフックされる。サンプルソースのように指定すると、マウスボタンのクリック、マウス移動などのイベントが発生する都度EventMouse関数が呼ばれるようになります。サンプルでは、マウスの座標をデリゲート関数に渡しています。最後にCallNextHookEx関数を実行していますが、これは次のフックプロシージャ―へ渡すために実行しています。ここで終了する場合は0を返すようにします。このサンプルは、下記のように実行すると、MouseEvent関数が実行されます。※このサンプルソースに対するいかなる損害に対して、当方は一切の責任を負いかねます。自己責任でお願いします。