kxing 发表于 2010-8-25 15:45:45

[已解决]求一个鼠标钩子例子

本帖最后由 kxing 于 2010-9-2 02:53 编辑

麻烦高手们给一个鼠标捕捉工具。
例如我按下左击,消息提示暗下左击等等。
希望这消息在任何状态下有效,不限制在某窗体内。

需要拦截 鼠标左、右、中三个键。
多谢!!!

xsjtxy 发表于 2010-8-25 19:21:39

屏蔽算不算?
http://www.autoitx.com/forum.php?mod=viewthread&tid=15327&highlight=%C6%C1%B1%CE

kxing 发表于 2010-8-25 20:39:52

不行啊,要拦截事件的,麻烦高手帮忙啊.

xsjtxy 发表于 2010-8-25 20:41:27

回复 3# kxing


    你说的拦截是只是在按下后提示一个消息还是按键无效?

131738 发表于 2010-8-25 21:18:52

回复 1# kxing

http://www.autoitx.com/forum.php?mod=viewthread&tid=13128&highlight=%CA%C2%BC%FE%BC%C7%C2%BC%B9%A4%BE%DF

kxing 发表于 2010-8-25 23:26:42

回复 4# xsjtxy

要按下后消息提示,不是没反应.
关于那个窗口纪录程序太复杂了,提取不了所需部分.

xsjtxy 发表于 2010-8-26 09:52:35

回复 6# kxing


    只是提示不拦截操作吗?

kxing 发表于 2010-8-26 10:09:56

对的,只要告诉我按了哪一个键就可以了.
例如我点了左击,msgbox(0,'','鼠标左击')

xsjtxy 发表于 2010-8-26 12:40:55


#Include <WinAPI.au3>
#include <WindowsConstants.au3>

While 1
Global $_endmouse=""
$_whand = DllCallbackRegister("_Mouse_Events_Handler", "int", "int;ptr;ptr")
$_whmod = _WinAPI_GetModuleHandle(0)
$_whook=_WinAPI_SetWindowsHookEx($WH_MOUSE_LL,DllCallbackGetPtr($_whand),$_whmod)
$mouse = _waitmouse()
Switch $mouse
      Case 1
                MsgBox(64,"","按下鼠标左键")
      Case 2
                MsgBox(64,"","按下鼠标右键")
      Case 3
                MsgBox(64,"","按下鼠标中键")
      Case 4
                MsgBox(64,"","鼠标轮转动")
EndSwitch
WEnd

Func _waitmouse()
        While 1
        Sleep(1)
                If Not $_endmouse="" Then
                        _WinAPI_UnhookWindowsHookEx($_whook)
                        DllCallbackFree($_whand)
                        Return $_endmouse
                EndIf
        WEnd
EndFunc

Func _Mouse_Events_Handler($wnCode, $wwParam, $wlParam)
        Switch $wwParam
                Case $WM_LBUTTONUP   ;按下鼠标左键
                        $_endmouse = 1
                Case $WM_RBUTTONDOWN   ;按下鼠标右键
                        $_endmouse = 2
                Case $WM_MBUTTONDOWN   ;按下鼠标中键
                        $_endmouse = 3
                Case $WM_MOUSEWHEEL    ;鼠标轮转动
                        $_endmouse = 4   
EndSwitch
EndFunc

kxing 发表于 2010-8-26 14:32:44

十分感谢!马上去测试.

zzz867 发表于 2010-8-26 14:37:06

這個應該不難阿,看起來是這樣

kxing 发表于 2010-8-26 15:11:18

另外请教下是否能让按下鼠标后不要触发点击事件呢
例如我在一个按钮上我左击后不要触发事件但有消息提示.
辛苦了!!!

javarike 发表于 2012-8-29 15:52:32

http://www.autoitx.com/forum.php?mod=viewthread&tid=15327&highlight=%C6%C1%B1%CE屏蔽键盘MOUSE超级UDF
页: [1]
查看完整版本: [已解决]求一个鼠标钩子例子