Space писал(а):нужно ловить любой клик за пределами окна.
возобновляю сразу после приёма мессаги - не помогает.Capture нужно возобновлять
не понялА ты делай WH_MOUSE_LL...
Space писал(а):не понял
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim Ret As Long, i As Long, iI As Integer
...
Case WM_LBUTTONDOWN
Debug.Print "WM_LBUTTONDOWN"
ReleaseCapture
SetCapture frmMain.hwnd
...
'передать сообщение стандартному обработчику сообщений Windows
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function
Dim hhkLowLevelMosbd As Long
Private Sub Command1_Click() 'Установить хук
hhkLowLevelMosbd = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, App.hInstance, 0)
End Sub
Private Sub Command2_Click() 'Снять хук
If hhkLowLevelMosbd <> 0 Then UnhookWindowsHookEx hhkLowLevelMosbd
End Sub
Private Sub Form_Unload(Cancel As Integer)
Command2_Click
End Sub
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Const WH_MOUSE_LL = 14
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_RBUTTONDOWN = &H204
Private Const HC_ACTION = 0
Public Function LowLevelMouseProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode = HC_ACTION Then
Select Case wParam
Case WM_LBUTTONDOWN
Form1.Caption = "Нажата левая клавиша мышки"
Case WM_RBUTTONDOWN
Form1.Caption = "Нажата правая клавиша мышки"
End Select
End If
LowLevelMouseProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End Function
Space писал(а):А какова вероятность того, что этот хук не установится?
Space писал(а):А зачем ты проверяешь hhkLowLevelMosbd перед вызовом UnhookWindowsHookEx...
Space писал(а):почему WM_RBUTTONDOWN чаще всего приходит дважды после одного клика?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 87