如何用方向键控制屏幕鼠标移动?[已解决]
本帖最后由 cashiba 于 2017-12-31 11:13 编辑一般在文本编辑软件中,可以用方向键移动鼠标
如果想在全屏幕区域使鼠标响应方向键而自由移动,要怎么做呢?
以及鼠标的形态、鼠标移动的精度是不是也可以改变.....
感觉又需要用到API了,但是对AU3的Dllcall调用API还是不得要领.
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) 可以用微软自带的辅助功能选项实现
用au3的话,如下:
HotKeySet("{ESC}", "Terminate")
HotKeySet("#{LEFT}", "ZuoYi")
HotKeySet("#{RIGHT}", "YouYi")
HotKeySet("#{UP}", "ShangYi")
HotKeySet("#{DOWN}", "XiaYi")
HotKeySet("#!{LEFT}", "ZuoJi")
HotKeySet("#!{RIGHT}", "YouJi")
Local $dll = DllOpen("user32.dll")
While 1
Sleep(100)
WEnd
Func ZuoYi()
me(1,-5)
EndFunc
Func YouYi()
me(1,5)
EndFunc
Func ShangYi()
me(1,0,-5)
EndFunc
Func XiaYi()
me(1,0,5)
EndFunc
Func ZuoJi()
me(2)
me(4)
EndFunc
Func YouJi()
Sleep(200)
me(8)
me(16)
EndFunc
Func me($Flags, $X = 0, $Y = 0, $Data = 0, $ExtraInfo = 0)
DllCall($dll, "none", "mouse_event", "dword", $Flags, "dword", $X, "dword", $Y, "dword", $Data, "ulong_ptr", $ExtraInfo)
EndFunc
Func Terminate()
Exit 0
DllClose($dll)
EndFunc
#cs
$Flags值:
鼠标移动 1
左键按下 2
左键释放 4
右键按下 8
右键释放 16
中键按下 32
中键释放 64
滚轮移动 2048
X 键按下 128
X 键释放 256
#ce
其他功能可以自由组合实现 可以用微软自带的辅助功能选项实现
用au3的话,如下:
vuivui 发表于 2017-12-29 13:36 http://www.autoit3.cn/images/common/back.gif
感谢关注这个问题!
代码运行后,直接按方向键好像看不到效果阿,要怎么使用呢? 简单点就好,没必要一定用api
HotKeySet("{UP}", "_up")
HotKeySet("{DOWN}", "_down")
HotKeySet("{LEFT}", "_left")
HotKeySet("{RIGHT}", "_right")
Global $X = MouseGetPos(0)
Global $Y = MouseGetPos(1)
Global Const $f = 10
While 1
Sleep(10)
WEnd
Func _down()
$Y += $f
MouseMove($X,$Y,1)
EndFunc
Func _up()
$Y -= $f
MouseMove($X,$Y,1)
EndFunc
Func _left()
$X -= $f
MouseMove($X,$Y,1)
EndFunc
Func _right()
$X += $f
MouseMove($X,$Y,1)
EndFunc 感谢关注这个问题!
代码运行后,直接按方向键好像看不到效果阿,要怎么使用呢?
cashiba 发表于 2017-12-29 17:27 http://www.autoit3.cn/images/common/back.gif
HotKeySet("#{LEFT}", "ZuoYi")
上面的#是win键的意思,如果你要直接用方向键把#去掉就行了,请看send的帮助。
退出请按Esc键,这样调用的dll才能关闭。
左击是:Win + Alt + 左方向键
移动中键,拖动鼠标等都比较容易实现的,根据$Flags值组合就行。 简单点就好,没必要一定用api
风行者 发表于 2017-12-29 18:28 http://www.autoit3.cn/images/common/back.gif
各有利弊吧,其实au3八个鼠标函数都是由mouse_event组合产生的,用mouse_event更自由灵活,可自定义更多的功能。
当然简单的功能还是用au3函数直接来实现方便。 简单点就好,没必要一定用api
风行者 发表于 2017-12-29 18:28 http://www.autoit3.cn/images/common/back.gif
谢谢风侠~
代码可用,只是刚开始按方向键的时候,鼠标会有一次乾坤大挪移....之后才正常
{:face (382):} HotKeySet("#{LEFT}", "ZuoYi")
上面的#是win键的意思,如果你要直接用方向键把#去掉就行了,请看 ...
vuivui 发表于 2017-12-30 18:07 http://www.autoit3.cn/images/common/back.gif
原来可以去掉#,还以为有特殊作用......
去掉#后就可以了
用win快捷键,很多程序以及桌面窗口会发生大小改变或出现弹出窗口,好像不太好用唉
非常感谢~
{:face (332):}
页:
[1]