laot 发表于 2011-7-17 17:07:40

有个有趣的问题,没有安装鼠标的话怎样模拟鼠标动作?顺便纠错

本帖最后由 laot 于 2011-7-17 17:22 编辑

在http://www.autoitx.com/thread-26146-1-1.html中,我说萝卜家园版本与鼠标有关的函数无作用,现在发现是自己搞错了。因为脚本运行在别人的桌面上,别人的机器没有安装鼠标,我自己的有,通过远程桌面连接过去,可以看到别人的桌面脚本运行,也可以看到自己的鼠标,而这个脚本无法移动我的鼠标,是以导致误解。
那么,这就有了一个问题,如果机器没有鼠标,还有没有办法模拟鼠标的动作呢?用什么函数?
谢谢

lainline 发表于 2011-7-17 17:21:00

很简单啊 定义几个热键 比如 ctrl 上下左右 回车 每按一下程序移动一下鼠标

laot 发表于 2011-7-17 17:41:53

鼠标指针不出现怎么模拟呢?应该让指针出现吧

lainline 发表于 2011-7-17 18:46:17

试试强制安装一个串口鼠标驱动 刚才误会了我还以为是你要在没鼠标的电脑上操作HotKeySet ("{F11}","_start")
$sxxx=0
$time=0
_start()
$timeline1=90;鼠标加速时间1
$stepline1=3;鼠标速度1
$stepline2=15;鼠标速度2
While 1
       
WEnd
Func _start()
        If $sxxx=0 Then
        TrayTip('模拟鼠标启用',"F11启停,空格鼠标左键,回车鼠标右键",5)
        HotKeySet ("{UP}","_UP")
        HotKeySet ("{DOWN}","_DOWN")
        HotKeySet ("{LEFT}","_LEFT")
        HotKeySet ("{RIGHT}","_RIGHT")
        HotKeySet ("{ENTER}","_ENTER")
        HotKeySet ("{SPACE}","_SPACE")
        $sxxx=1
Else
        TrayTip('已停用模拟鼠标'," ",2)
        HotKeySet ("{UP}")
        HotKeySet ("{DOWN}")
        HotKeySet ("{LEFT}")
        HotKeySet ("{RIGHT}")
        HotKeySet ("{ENTER}")
        HotKeySet ("{SPACE}")
        $sxxx=0
EndIf
EndFunc

Func _UP()
        $mouse=MouseGetPos ()
        $ti=TimerDiff($time)
        $time=TimerInit()
        If $ti > 0 And $ti < $timeline1 Then
        MouseMove ( $mouse,$mouse-$stepline2,0)
        ElseIf $ti >= $timeline1 Then
        MouseMove ( $mouse,$mouse-$stepline1,0)
        EndIf
EndFunc

Func _DOWN()
                $mouse=MouseGetPos ()
        $ti=TimerDiff($time)
        $time=TimerInit()
        If $ti > 0 And $ti < $timeline1 Then
        MouseMove ( $mouse,$mouse+$stepline2,0)
        ElseIf $ti >= $timeline1 Then
        MouseMove ( $mouse,$mouse+$stepline1,0)
        EndIf
EndFunc

Func _LEFT()
                $mouse=MouseGetPos ()
                $ti=TimerDiff($time)
        $time=TimerInit()
        If $ti > 0 And $ti < $timeline1 Then
        MouseMove ( $mouse-$stepline2,$mouse,0)
        ElseIf $ti >= $timeline1 Then
        MouseMove ( $mouse-$stepline2,$mouse,0)
        EndIf
EndFunc

Func _RIGHT()
                $mouse=MouseGetPos ()
                $ti=TimerDiff($time)
        $time=TimerInit()
        If $ti > 0 And $ti < $timeline1 Then
        MouseMove ( $mouse+$stepline2,$mouse,0)
        ElseIf $ti >= $timeline1 Then
        MouseMove ( $mouse+$stepline2,$mouse,0)
        EndIf
EndFunc

Func _ENTER()
        MouseClick("right")
EndFunc

Func _SPACE()
        MouseClick("left")
EndFunc呢 无聊写了下面这些代码

lainline 发表于 2011-7-17 20:02:09

可以启用远程机的鼠标键功能 (搜下)
另外这个可以貌似可以绕过360的模拟点击鼠标封锁 还是微软的东西扯淡

laot 发表于 2011-7-17 20:38:01

谢lainline 耐心指点。
之所以有这个问题,是因为我在远程机上用计划任务运行一个脚本,比如半个小时后启动并登陆一个软件,软件启动正常,但登陆似乎很诡异,虽然将软件激活为当前窗口,但无论用controlsend还是controlsettext都不能向指定的控件发送字符串,必须要在窗口任何位置点击一下鼠标才开始输入,好像唤醒一样,搞不清楚是怎么回事。而远程机又没有鼠标。
不知道lainline 大侠怎么判断这种现象的原因?另外,你说的“可以启用远程机的鼠标键功能”是什么意思?我搜了一下,没找到合适的资料

lainline 发表于 2011-7-17 20:52:03

本帖最后由 lainline 于 2011-7-17 20:58 编辑

可能是计划任务不支持非远程连接状态下的界面操作 也就是说没有用户登录不产生(或锁定)界面内容(可能是微软被木马搞烦打了个小补丁) 猜测而已
你也可以试试在论坛里找找鼠标钩子函数 发个鼠标点击消息 可能骗过操作系统

laot 发表于 2011-7-17 20:57:34

呵呵,我是个低手,就更搞不清楚了,只是感觉很诡异。另外,你的模拟鼠标被我"#include进去了,好使,嘿嘿,谢谢。我自己弄,得边学边弄,弄一天弄好都算我聪明。您顺手就解决了,云泥之判啊,惭愧。

laot 发表于 2011-7-17 21:44:15

还是不中啊,装在远程机上以后,鼠标没有动作
页: [1]
查看完整版本: 有个有趣的问题,没有安装鼠标的话怎样模拟鼠标动作?顺便纠错