找回密码
 加入
搜索
查看: 2675|回复: 8

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

  [复制链接]
发表于 2011-7-17 17:07:40 | 显示全部楼层 |阅读模式
本帖最后由 laot 于 2011-7-17 17:22 编辑

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

相关帖子

发表于 2011-7-17 17:21:00 | 显示全部楼层
很简单啊 定义几个热键 比如 ctrl 上下左右 回车 每按一下程序移动一下鼠标
 楼主| 发表于 2011-7-17 17:41:53 | 显示全部楼层
鼠标指针不出现怎么模拟呢?应该让指针出现吧
发表于 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[0],$mouse[1]-$stepline2,0)
        ElseIf $ti >= $timeline1 Then 
        MouseMove ( $mouse[0],$mouse[1]-$stepline1,0)
        EndIf
EndFunc

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

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

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

Func _ENTER()
        MouseClick("right")
EndFunc

Func _SPACE()
        MouseClick("left")
EndFunc
呢 无聊写了下面这些代码
发表于 2011-7-17 20:02:09 | 显示全部楼层
可以启用远程机的鼠标键功能 (搜下)
另外这个可以貌似可以绕过360的模拟点击鼠标封锁 还是微软的东西扯淡
 楼主| 发表于 2011-7-17 20:38:01 | 显示全部楼层
谢lainline 耐心指点。
之所以有这个问题,是因为我在远程机上用计划任务运行一个脚本,比如半个小时后启动并登陆一个软件,软件启动正常,但登陆似乎很诡异,虽然将软件激活为当前窗口,但无论用controlsend还是controlsettext都不能向指定的控件发送字符串,必须要在窗口任何位置点击一下鼠标才开始输入,好像唤醒一样,搞不清楚是怎么回事。而远程机又没有鼠标。
不知道lainline 大侠怎么判断这种现象的原因?另外,你说的“可以启用远程机的鼠标键功能”是什么意思?我搜了一下,没找到合适的资料
发表于 2011-7-17 20:52:03 | 显示全部楼层
本帖最后由 lainline 于 2011-7-17 20:58 编辑

可能是计划任务不支持非远程连接状态下的界面操作 也就是说没有用户登录不产生(或锁定)界面内容(可能是微软被木马搞烦打了个小补丁) 猜测而已
你也可以试试在论坛里找找鼠标钩子函数 发个鼠标点击消息 可能骗过操作系统
 楼主| 发表于 2011-7-17 20:57:34 | 显示全部楼层
呵呵,我是个低手,就更搞不清楚了,只是感觉很诡异。另外,你的模拟鼠标被我"#include进去了,好使,嘿嘿,谢谢。我自己弄,得边学边弄,弄一天弄好都算我聪明。您顺手就解决了,云泥之判啊,惭愧。
 楼主| 发表于 2011-7-17 21:44:15 | 显示全部楼层
还是不中啊,装在远程机上以后,鼠标没有动作
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 04:27 , Processed in 0.086002 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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