Что нового

[Мышь, клавиатура] Хук на левую кнопку мышки

zerobot

Новичок
Сообщения
78
Репутация
0
Код:
#include <GUIConstants.au3>
#Include <WinAPI.au3> 


Global $xevent = "2", $xmouseData = ""
Global Const $MSLLHOOKSTRUCT = $tagPOINT & ";dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo"

$hKey_Proc = DllCallbackRegister("_Mouse_Proc", "int", "int;ptr;ptr")
$hM_Module = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0)
$hM_Hook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", $WH_MOUSE_LL, "ptr", DllCallbackGetPtr($hKey_Proc), "hwnd", $hM_Module[0], "dword", 0)

While 1
WEnd

Func _Mouse_Proc($nCode, $wParam, $lParam)
    Local $info, $ptx, $pty, $mouseData, $flags, $time, $dwExtraInfo
	
    If $nCode < 0 Then 
        $ret = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hM_Hook[0], _
                "int", $nCode, "ptr", $wParam, "ptr", $lParam)
        Return $ret[0]
    EndIf

    Select
        Case $wParam = $WM_LBUTTONDOWN
            Global $xevent = "1"
			;Что тут написать, чтобы кнопка не нажималась?
        Case $wParam = $WM_LBUTTONUP
            Global $xevent = "2"
    EndSelect

    $ret = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hM_Hook[0], _
            "int", $nCode, "ptr", $wParam, "ptr", $lParam)
    Return $ret[0]
EndFunc  

Func OnAutoItExit()
    DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hM_Hook[0])
    $hM_Hook[0] = 0
    DllCallbackFree($hKey_Proc)
    $hKey_Proc = 0
EndFunc


Пытаюсь хукнуть мышку, хочу чтобы левая кнопка мышки не нажималась, затем уже буду прикручивать условие, ну а сейчас вопрос, как сделать, чтобы когда хук видел что нажимается левая кнопка мышки, он заменял это действие на что-то другое?

С уважением,
Zero
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
zerobot
Есть готовая UDF MouseOnEvent - Обработка событии мышки

Код:
#include "MouseOnEvent.au3"

Global $Count

_MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT, "DoIt", 0, 1)

While Sleep(1000)
WEnd

Func DoIt()
  $Count += 1
  If $Count = 5 Then _MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT, "")
  ConsoleWrite("Клик " & $Count & @CRLF)
EndFunc
 
Верх