TC官方合作论坛

 找回密码
 立即注册
查看: 2842|回复: 6

[源码分享] 第一份TC5.0的代码 模拟鼠标轨迹

[复制链接]
发表于 2015-2-13 02:05:10 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
代码和之前的变动有点大:

function MouseMove(Hwnd,x,y)//模拟轨迹
var Nowx,Nowy,Tox,Toy,XLen,YLen,Count,Set,XCount,YCount,LoopRec,SetUp//   当前坐标,目标坐标,坐标距离,总坐标数,步进,X Y坐标数 循环记数

    if(Hwnd>64)
        windowclienttoscreen(Hwnd,x,y,Tox,Toy)
    else
        Tox=x
        Toy=y
    end
    mousegetpoint(Nowx,Nowy)
    XLen=mabs(Tox-Nowx)
    YLen=mabs(Toy-Nowy)
    Count=msqrt(XLen*XLen + YLen*YLen)
   
    SetUp=cint(Count/10)
    editsettext("edit5",Count&","&SetUp)
    if(SetUp<10)
        SetUp=10
    end
   
    Set=cint(Count/SetUp)//步进值
    XCount=cint((Tox-Nowx)/Set)
    YCount=cint((Toy-Nowy)/Set)
    for(var i=0;i<Count;i=i+Count/Set )
        LoopRec=LoopRec+1
        Tox=Nowx+XCount*LoopRec
        Toy=Nowy+YCount*LoopRec
        if(Tox<0 && Toy<0)
           drivemousemove(Nowx,Nowy)
        else
           drivemousemove(Tox,Toy)
        end
        sleep(3)
    end
end
回复

使用道具 举报

发表于 2015-2-17 15:05:07 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2015-3-9 10:21:23 | 显示全部楼层
套用代码的时候怎么有偏移呢,都不能准确到坐标上了,要怎么改
回复 支持 反对

使用道具 举报

发表于 2015-8-3 07:43:01 | 显示全部楼层
本帖最后由 民工唐子 于 2015-8-3 07:44 编辑

我也用了下,发现有偏移.经过思考,跟另外一个人的轨迹鼠标做了对比,发现最后需要修正一下.我把你的代码翻译成中文了,便于英文不灵光的人看....我也是不灵光的人{:soso_e117:}.贴上我的代码!没有测试过哦.有心人测试了,反馈下!谢谢!
  1. 功能 鼠标轨迹移动(x,y,对象)//模拟轨迹
  2.     变量 当前坐标X,当前坐标Y,目标坐标x,目标坐标y,坐标距离X长度,坐标距离Y长度,实际直线长度,移动一次的长度,XCount,YCount,LoopRec,移动次数// 当前坐标,目标坐标,坐标距离,总坐标数,步进,X Y坐标数 循环记数   
  3.     变量 轨迹目标坐标x,轨迹目标坐标y
  4.    
  5.     目标坐标x = x
  6.     目标坐标y = y   
  7.     对象.GetCursorPos(当前坐标X,当前坐标Y) //获取当前鼠标的坐标
  8.     坐标距离X长度 = 数学绝对值(目标坐标x - 当前坐标X)
  9.     坐标距离Y长度 = 数学绝对值(目标坐标y - 当前坐标Y)
  10.     实际直线长度 = 数学开方(坐标距离X长度*坐标距离X长度 + 坐标距离Y长度*坐标距离Y长度)
  11.    
  12.     移动次数 = 转整型(实际直线长度/10) //每次移动10个像素,计算总共需要移动多少次.
  13.     调试输出("移动次数"&移动次数)
  14.     //移动次数越大,移动一次的长度就越短
  15.     如果(移动次数 < 10) //如果总共移动的次数少于5,则赋值至少移动5次
  16.         移动次数 = 10
  17.     结束   
  18.     移动一次的长度 = 转整型(实际直线长度/移动次数)//步进值
  19.     调试输出("移动一次的长度"&移动一次的长度)
  20.     XCount = 转整型((目标坐标x - 当前坐标X)/移动一次的长度)
  21.     YCount = 转整型((目标坐标y - 当前坐标Y)/移动一次的长度)
  22.     遍历(变量 i=0;i < 实际直线长度-1;i = i + 实际直线长度/移动一次的长度) //减少一步,后面做最后的修正,防止鼠标偏移
  23.         LoopRec = LoopRec + 1  //LoopRec初始值为0
  24.         
  25.         轨迹目标坐标x = 当前坐标X+XCount*LoopRec
  26.         
  27.         轨迹目标坐标y = 当前坐标Y+YCount*LoopRec
  28.         
  29.         如果(目标坐标x < 0 && 目标坐标y < 0)
  30.             调试输出("在这里1")
  31.             对象.MoveTo(轨迹目标坐标x,轨迹目标坐标y)            
  32.         否则
  33.             调试输出("在这里2")
  34.             对象.MoveTo(轨迹目标坐标x,轨迹目标坐标y)
  35.             
  36.         结束      
  37.         等待(5)
  38.     结束
  39.     等待(50)
  40.     //最后的修正,防止鼠标偏移//非常有必要!  
  41.     对象.MoveTo(目标坐标x,目标坐标y)//最后的修正,防止鼠标偏移  
  42. 结束
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-22 15:39:09 | 显示全部楼层
M我发你不会偏移的  改了我没有上来更新不好意思
回复 支持 反对

使用道具 举报

发表于 2020-8-10 10:53:26 | 显示全部楼层
支持你!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-4-26 10:04 , Processed in 0.037342 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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