前回Access VBAで目的のキーボードが押されたかどうか調査しましたが、今回はマウスがクリックされたかどうか検出します。
これもゲームソフトなどでよく使う方法で、ループでポーリングします。
検出にはWindowsAPIのGetAsyncKeyStateを使用します。
ここでは、左クリックか右クリックされているかどうか調べ、ESCキーが押されれば終了します。
下記の流れになります。
1)フォーム1のタイトルに「stat」と表示
2)ループでキー入力を調べます。
・ESCキーでループから抜けます
・左クリック(vbKeyLButton)で「左クリック」と表示します。
・右クリック(vbKeyRButton)で「右クリック」と表示します。
・キー入力がなければ「なし」と表示します。
3)ループを抜けるとフォーム1のタイトルに「end」と表示
■ Access VBA 実行コード
Option Compare Database
Option Explicit
Private Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Public Sub MyMouseClick()
Dim lkey As Long
Forms!フォーム1.Caption = "start"
Do Until GetAsyncKeyState(27) <> 0
If GetAsyncKeyState(vbKeyLButton) <> 0 Then
Forms!フォーム1.Caption = "左クリック"
ElseIf GetAsyncKeyState(vbKeyRButton) <> 0 Then
Forms!フォーム1.Caption = "右クリック"
Else
Forms!フォーム1.Caption = "なし"
End If
DoEvents
Loop
Forms!フォーム1.Caption = "end"
End Sub