回答編集履歴
3
追記、改行部分を修正
answer
CHANGED
@@ -2,13 +2,14 @@
|
|
2
2
|
|
3
3
|
`WM_LBUTTONDOWN`はWindowメッセージを示す値なのでフック用プロシージャのnCodeに入るはずです。
|
4
4
|
WM_LBUTTONDOWNメッセージの場合、wParam は仮想キーコード、lParamはマウスのX,Y座標です。
|
5
|
+
**※※追記していますが、これは私の間違いです。※※**
|
5
6
|
|
6
7
|
詳細はMSDNをご覧ください。
|
7
8
|
[WM_LBUTTONDOWN message](https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms645607(v=vs.85).aspx)
|
8
9
|
|
9
10
|
---
|
10
11
|
追記(2017/12/20)
|
11
|
-
+評価をいただいていましたが、コメントでご指摘のようにマウスフック用のプロシージャのnCodeにはWM_LBUTTONDOWNは入りません。この点、私の間違いでしたのでお詫びいたします。機会があれば回答の評価を下げてください。すみません。
|
12
|
+
+評価をいただいていましたが、コメントでご指摘のようにマウスフック用のプロシージャのnCodeにはWM_LBUTTONDOWNは入りません。質問者様のコードで正しいです。この点、私の間違いでしたのでお詫びいたします。機会があれば回答の評価を下げてください。すみません。
|
12
13
|
|
13
14
|
---
|
14
15
|
追記#2(2017/12/20) 動作を確認しました。
|
@@ -19,8 +20,7 @@
|
|
19
20
|
結果、マウスを動かさなくても(マウスカーソルを動かさない)、WM_MOUSEMOVE時にプロシージャが呼ばれました。
|
20
21
|
|
21
22
|
ただ、左クリックでは`WM_LBUTTONDOWN`、右クリックでは`WM_RBUTTONDOWN`の時に期待するように呼ばれています。WM_MOUSEMOVEはマウスの操作にもよりますが、左クリックでは
|
22
|
-
WM_LBUTTONDOWN --> WM_MOUSEMOVE --> WM_MOUSEMOVE とのように複数回呼ばれました。
|
23
|
+
WM_LBUTTONDOWN --> WM_MOUSEMOVE --> WM_MOUSEMOVE とのように複数回呼ばれました。これはWindows 7(64ビット) と Windows 10(64ビット)のどちらでも同じでした。
|
23
|
-
これはWindows 7(64ビット) と Windows 10(64ビット)のどちらでも同じでした。
|
24
24
|
(プログラムは Visual Studio 2017, .NET Framework 4.6.1で作成)
|
25
25
|
|
26
26
|
質問者様のケースでも、WM_MOUSEMOVEもあるものの、WM_LBUTTONDOWNも受信できているのではないでしょうか。
|
2
動作を確認したので更に追記
answer
CHANGED
@@ -8,4 +8,19 @@
|
|
8
8
|
|
9
9
|
---
|
10
10
|
追記(2017/12/20)
|
11
|
-
+評価をいただいていましたが、コメントでご指摘のようにマウスフック用のプロシージャのnCodeにはWM_LBUTTONDOWNは入りません。この点、私の間違いでしたのでお詫びいたします。機会があれば回答の評価を下げてください。すみません。
|
11
|
+
+評価をいただいていましたが、コメントでご指摘のようにマウスフック用のプロシージャのnCodeにはWM_LBUTTONDOWNは入りません。この点、私の間違いでしたのでお詫びいたします。機会があれば回答の評価を下げてください。すみません。
|
12
|
+
|
13
|
+
---
|
14
|
+
追記#2(2017/12/20) 動作を確認しました。
|
15
|
+
|
16
|
+
私の先の回答、フック用プロシージャのwParamにWM_LBUTTONDOWNが入る件については間違った指摘を載せてしまいすみません。申し訳なかったので、こちらでも動作確認してみました。質問者様がご提示のコードは全部ではないと思いましたので、以下のマイクロソフトのサンプルコードを流用して試しました。
|
17
|
+
[Visual C# .NET では、ウィンドウ フックを設定する方法](https://support.microsoft.com/ja-jp/help/318804/how-to-set-a-windows-hook-in-visual-c--net)
|
18
|
+
|
19
|
+
結果、マウスを動かさなくても(マウスカーソルを動かさない)、WM_MOUSEMOVE時にプロシージャが呼ばれました。
|
20
|
+
|
21
|
+
ただ、左クリックでは`WM_LBUTTONDOWN`、右クリックでは`WM_RBUTTONDOWN`の時に期待するように呼ばれています。WM_MOUSEMOVEはマウスの操作にもよりますが、左クリックでは
|
22
|
+
WM_LBUTTONDOWN --> WM_MOUSEMOVE --> WM_MOUSEMOVE とのように複数回呼ばれました。
|
23
|
+
これはWindows 7(64ビット) と Windows 10(64ビット)のどちらでも同じでした。
|
24
|
+
(プログラムは Visual Studio 2017, .NET Framework 4.6.1で作成)
|
25
|
+
|
26
|
+
質問者様のケースでも、WM_MOUSEMOVEもあるものの、WM_LBUTTONDOWNも受信できているのではないでしょうか。
|
1
回答が不適切なので追記
answer
CHANGED
@@ -4,4 +4,8 @@
|
|
4
4
|
WM_LBUTTONDOWNメッセージの場合、wParam は仮想キーコード、lParamはマウスのX,Y座標です。
|
5
5
|
|
6
6
|
詳細はMSDNをご覧ください。
|
7
|
-
[WM_LBUTTONDOWN message](https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms645607(v=vs.85).aspx)
|
7
|
+
[WM_LBUTTONDOWN message](https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms645607(v=vs.85).aspx)
|
8
|
+
|
9
|
+
---
|
10
|
+
追記(2017/12/20)
|
11
|
+
+評価をいただいていましたが、コメントでご指摘のようにマウスフック用のプロシージャのnCodeにはWM_LBUTTONDOWNは入りません。この点、私の間違いでしたのでお詫びいたします。機会があれば回答の評価を下げてください。すみません。
|