Skip to content

Instantly share code, notes, and snippets.

@kusa-mochi
Created June 6, 2020 11:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kusa-mochi/eb0d15c54efd24059e041daf7ead2ba2 to your computer and use it in GitHub Desktop.
Save kusa-mochi/eb0d15c54efd24059e041daf7ead2ba2 to your computer and use it in GitHub Desktop.
// マウス操作のイベントが発生したら実行されるメソッド
private static IntPtr MouseInputCallback (int nCode, IntPtr wParam, IntPtr lParam) {
if (nCode < 0) {
// マウスのイベントに紐付けられた次のメソッドを実行する。メソッドがなければ処理終了。
return NativeMethods.CallNextHookEx (_mouseHookId, nCode, wParam, lParam);
}
MSLLHOOKSTRUCT param = Marshal.PtrToStructure<MSLLHOOKSTRUCT> (lParam);
Win32Point mousePosition = new Win32Point {
X = 0,
Y = 0
};
// 現在のマウスポインタの位置を取得する。以降の処理で使いたい場合は使う。
NativeMethods.GetCursorPos (ref mousePosition);
// マウスのどのようなイベントが発生したのかで処理を分岐する。
switch ((NativeMethods.MouseMessage) wParam) {
case NativeMethods.MouseMessage.WM_LBUTTONDOWN:
// マウスの左ボタンが押し下げられたときに実行したい処理をここに書く。
break;
case NativeMethods.MouseMessage.WM_LBUTTONUP:
// マウスの左ボタンが押し上げられたときに実行したい処理をここに書く。
break;
case NativeMethods.MouseMessage.WM_MOUSEMOVE:
// マウスポインタが移動したときに実行したい処理をここに書く。
break;
case NativeMethods.MouseMessage.WM_MOUSEWHEEL:
// マウスホイールが回転されたときに実行したい処理をここに書く。
// 例
int wheelAmount = (param.mouseData >> 16) / 120;
// ホイールの回転量はparam.mouseDataの値を見れば分かる。
// wheelAmountの値が2の場合、ホイールが上(手前から奥)へカクカクッと2段階回転したことを意味する。
// wheelAmountの値が-1の場合、ホイールが下(奥から手前)へカクッと1段階回転したことを意味する。
break;
case NativeMethods.MouseMessage.WM_RBUTTONDOWN:
// マウスの右ボタンが押し下げられたときに実行したい処理をここに書く。
break;
case NativeMethods.MouseMessage.WM_RBUTTONUP:
// マウスの右ボタンが押し上げられたときに実行したい処理をここに書く。
break;
case NativeMethods.MouseMessage.WM_MBUTTONDOWN:
// マウスの中央ボタンが押し下げられたときに実行したい処理をここに書く。
break;
case NativeMethods.MouseMessage.WM_MBUTTONUP:
// マウスの中央ボタンが押し上げられたときに実行したい処理をここに書く。
break;
default:
break;
}
// マウスのイベントに紐付けられた次のメソッドを実行する。メソッドがなければ処理終了。
return NativeMethods.CallNextHookEx (_mouseHookId, nCode, wParam, lParam);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment