[已解决]求一个鼠标钩子例子
本帖最后由 kxing 于 2010-9-2 02:53 编辑麻烦高手们给一个鼠标捕捉工具。
例如我按下左击,消息提示暗下左击等等。
希望这消息在任何状态下有效,不限制在某窗体内。
需要拦截 鼠标左、右、中三个键。
多谢!!! 屏蔽算不算?
http://www.autoitx.com/forum.php?mod=viewthread&tid=15327&highlight=%C6%C1%B1%CE 不行啊,要拦截事件的,麻烦高手帮忙啊. 回复 3# kxing
你说的拦截是只是在按下后提示一个消息还是按键无效? 回复 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 回复 4# xsjtxy
要按下后消息提示,不是没反应.
关于那个窗口纪录程序太复杂了,提取不了所需部分. 回复 6# kxing
只是提示不拦截操作吗? 对的,只要告诉我按了哪一个键就可以了.
例如我点了左击,msgbox(0,'','鼠标左击')
#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
十分感谢!马上去测试. 這個應該不難阿,看起來是這樣 另外请教下是否能让按下鼠标后不要触发点击事件呢
例如我在一个按钮上我左击后不要触发事件但有消息提示.
辛苦了!!! http://www.autoitx.com/forum.php?mod=viewthread&tid=15327&highlight=%C6%C1%B1%CE屏蔽键盘MOUSE超级UDF
页:
[1]