找回密码
 加入
搜索
查看: 2304|回复: 2

[AU3基础] 移动鼠标或按下键盘的键时,弹出窗口

[复制链接]
发表于 2014-6-8 14:24:56 | 显示全部楼层 |阅读模式
比如,移动鼠标 或 按下键盘的键时,弹出窗口
发表于 2014-7-23 16:23:30 | 显示全部楼层
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)
HotKeySet("^{end}",'_exit')
Global $hHook, $hStub_KeyProc
Global $hStub_MouProc,$hHook_mouse
Local $hmod
$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
$hStub_MouProc = DllCallbackRegister("_Mouse_Events_Handler", "int", "int;ptr;ptr")
$hmod = _WinAPI_GetModuleHandle(0)
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
$hHook_mouse=_WinAPI_SetWindowsHookEx($WH_MOUSE_LL,DllCallbackGetPtr($hStub_MouProc),$hmod)
While 1
        Sleep(10)
                
WEnd
Func _KeyProc($nCode, $wParam, $lParam)
        Local $tKEYHOOKS, $wVKey
        $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
        If $nCode < 0 Then
                Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
        EndIf
        $wVKey = DllStructGetData($tKEYHOOKS, "vkCode")
                If ($wParam = $WM_KEYDOWN) Then 
                        ToolTip(''&$wVKey&''&" was pressed.")
                                                Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam) ;不加这一句可以截断按下动作传递
                                               
                        Return 1
                ElseIf ($wParam = $WM_KEYUP) Then
                        ToolTip(''&$wVKey&''&" was released.")
                                                                                                Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam) ;不加这一句可以截断弹起动作传递
                EndIf
        
        EndFunc        ;==>_KeyProc
        
Func _Mouse_Events_Handler($wnCode, $wwParam, $wlParam)
                Switch $wwParam
                                Case $WM_LBUTTONUP     ;弹起鼠标左键
                                        ToolTip('L UP.')
                                        
                                                                Case $WM_LBUTTONDOWN     ;按下鼠标左键
                                        ToolTip('L DOWN.')
                                       
                                Case $WM_RBUTTONUP    ;弹起鼠标右键
                                        ToolTip('R UP.')
                                       
                                                                Case $WM_RBUTTONDOWN    ;按下鼠标右键
                                        ToolTip('R DOWN.')
                                EndSwitch
                        ;Return _WinAPI_CallNextHookEx($hHook_mouse, $wnCode, $wwParam, $wlParam) ;与按键相同,不加这一句可以阻断鼠标动作传递,但是实际测试没有效果,都不能阻断
EndFunc


Func _exit()
        _WinAPI_UnhookWindowsHookEx($hHook)
        DllCallbackFree($hStub_KeyProc)
        Exit
EndFunc   ;==>_exit 
用钩子函数,可以实现的
发表于 2015-1-6 08:16:34 | 显示全部楼层
谢谢分享!~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-28 06:05 , Processed in 0.069302 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表