找回密码
 加入
搜索
查看: 1737|回复: 4

[AU3基础] [已解决]如何实时获取鼠标当前坐标?

[复制链接]
发表于 2018-3-16 22:27:51 | 显示全部楼层 |阅读模式
本帖最后由 3131210 于 2018-3-17 21:33 编辑

想要实时获取当前鼠标坐标,为什么下面得代码获取不到坐标?
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>

GUIRegisterMsg($WM_MOUSEMOVE, 'WM_MOUSEMOVE')
Example()

Func Example()
        While 1
        WEnd
EndFunc   ;==>Example

Func WM_MOUSEMOVE($hWnd, $iMsg, $wParam, $lParam)



        Local $aPos = MouseGetPos()
        Local $iX = $aPos[0]
        Local $iY = $aPos[1]

        ConsoleWrite($iX & '/' & $iY & @CRLF)



EndFunc   ;==>WM_MOUSEMOVE
 楼主| 发表于 2018-3-16 22:57:31 | 显示全部楼层
这段代码在鼠标静止的情况下也会获取坐标,但是我只想在鼠标动的时候才获取。
Example()

Func Example()
        While Sleep(10)
        Local $aPos = MouseGetPos()
        Local $iX = $aPos[0]
        Local $iY = $aPos[1]

        ConsoleWrite($iX & '/' & $iY & @CRLF)

        WEnd
EndFunc   ;==>Example
发表于 2018-3-17 11:51:27 | 显示全部楼层
Example()

Func Example()
        Local $sIntX = MouseGetPos(0)
        Local $sIntY = MouseGetPos(1)
        While Sleep(10)
                Local $aPos = MouseGetPos()
                Local $iX = $aPos[0]
                Local $iY = $aPos[1]
                If $iX <> $sIntX Or $iY <> $sIntY Then
                        $sIntX = $iX
                        $sIntY = $iY
                        ConsoleWrite($iX & '/' & $iY & @CRLF)
                EndIf

        WEnd
EndFunc 
 楼主| 发表于 2018-3-17 20:51:45 | 显示全部楼层
本帖最后由 3131210 于 2018-3-17 20:54 编辑

回复 3# zghwelcome


你的办法实际上也是一直在获取鼠标坐标,只是加了个判断与之前的坐标是否一致

    可以用1楼钩子的方法实现吗?
 楼主| 发表于 2018-3-17 21:32:57 | 显示全部楼层
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Global $_whand = DllCallbackRegister("_Mouse_Events_Handler", "int", "int;ptr;ptr")
Local $_whmod = _WinAPI_GetModuleHandle(0)
Global $_whook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($_whand), $_whmod)

While 1
        Sleep(10)
WEnd

Func _Mouse_Events_Handler($wnCode, $wwParam, $wlParam)
        Switch $wwParam
                Case $WM_MOUSEMOVE ;鼠标移动
                        Local $aPos = MouseGetPos()
                        Local $iX = $aPos[0]
                        Local $iY = $aPos[1]

                        ConsoleWrite($iX & '/' & $iY & @CRLF)
        EndSwitch
EndFunc   ;==>_Mouse_Events_Handler
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 19:56 , Processed in 0.072643 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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