TC官方合作论坛

 找回密码
 立即注册
查看: 1124|回复: 10
打印 上一主题 下一主题

[问题] 大漠插件后台多开测试

[复制链接]
跳转到指定楼层
楼主
发表于 2015-9-19 21:43:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

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

x
本帖最后由 刷分de人 于 2015-9-19 22:11 编辑

代码如下



变量 hw,j,线程ID,dm,hwnd
//从这里开始执行
功能 执行()
    变量 dm_ret
    //从这里开始你的代码
    dm.Setpath(获取资源路径("rc:"))
    dm=com("dm.dmsoft")
    等待(100)
    绑定()      
    等待(100)
    键盘发送字符串("hello world")
    等待(1000)        
    解绑()
    线程关闭("执行","")
结束

//启动_热键操作
功能 启动_热键()
    变量 a=0,dm_ret, hwnds=数组("j")
    hwnds= dm.EnumWindow(0, "记事本", "", 1 + 4 + 8 + 16)      
    等待(100)
    var n = strsplit(hwnds,",",hw)   
    遍历(变量 i = 0; i < n; i++)
        hwnd=hw[a]  
        等待(100)
        线程ID=线程开启("执行","")        
        a=a+1
        等待(100)
    结束   
   
   
结束

功能 绑定()   
    变量 dm_ret
    等待(300)
    dm_ret=dm.BindWindow(hwnd,"normal","normal","windows",0)
    等待(2000)
    如果(dm_ret>0)
        调试输出("绑定成功")
    否则
        调试输出("绑定失败")
        
    结束
   
结束
//终止热键操作
功能 终止_热键()
    解绑()  
结束
功能 魔域测试_初始化()
    //这里添加你要执行的代码
    注册大漠插件()
结束

功能 注册大漠插件()
    变量 版本
    如果(注册插件(获取资源路径("rc:dm.dll"),真))
        调试输出("大漠插件注册成功")
        dm=com("dm.dmsoft")
        版本=dm.ver()
        调试输出("当前大漠插件版本:"&版本)
    否则
        调试输出("大漠插件注册失败")
    结束
结束   
功能 解绑()
    变量 dm_ret
    dm_ret = dm.UnBindWindow()
    如果(dm_ret>0)
        调试输出("成功解绑")
    结束
   
结束






经测试调试输出显示绑定成功,但是不知道为何输入的字符都是集中在一个记事本里面,没能达到我想要的每个记事本输入一串字符的作用,实在是不知道什么原因特来求助。获取的记事本的数量是准确的,搞不懂啊
回复

使用道具 举报

沙发
 楼主| 发表于 2015-9-19 21:57:20 | 只看该作者
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2015-9-19 22:54:32 | 只看该作者
没有人回答吗?
回复 支持 反对

使用道具 举报

地板
发表于 2015-9-19 23:37:45 | 只看该作者
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2015-9-20 10:29:42 来自手机 | 只看该作者
lidongxu 发表于 2015-9-19 23:37
http://bbs.tyuyan.com/forum.php?mod=viewthread&tid=48674&highlight=多开

看不懂啊。我的代码在功能 执行 的开头加上调试输出(hwnd)是能够准确输出记事本的句柄的,而且也是显示绑定成功的,可是为什么到了执行字符串输出那里就变成了只是在一个记事本里面操作呢?我想要的是每个记事本都是一样的操作啊
回复 支持 反对

使用道具 举报

6#
发表于 2015-9-20 16:18:11 | 只看该作者
多开 大漠对象要用数组保存,一个记事本,对应一个大漠对象 。你现在就一个大漠对象,只可以操作一个记事本
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2015-9-20 17:58:24 来自手机 | 只看该作者
lidongxu 发表于 2015-9-20 16:18
多开 大漠对象要用数组保存,一个记事本,对应一个大漠对象 。你现在就一个大漠对象,只可以操作一个记事本 ...

应该加在哪个位置呢?请指教一下
回复 支持 反对

使用道具 举报

8#
发表于 2015-9-20 23:00:57 | 只看该作者
刷分de人 发表于 2015-9-20 17:58
应该加在哪个位置呢?请指教一下

不是给了你链接了吗?  看源码啊
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2015-9-20 23:18:34 | 只看该作者
lidongxu 发表于 2015-9-20 23:00
不是给了你链接了吗?  看源码啊

看不了啊。下载下来根本打不开,配置文件出错。打开源码里面显示的都是一些乱码,根本看不到啊
回复 支持 反对

使用道具 举报

10#
发表于 2015-9-20 23:46:26 | 只看该作者
刷分de人 发表于 2015-9-20 23:18
看不了啊。下载下来根本打不开,配置文件出错。打开源码里面显示的都是一些乱码,根本看不到啊 ...
  1. //代码以鼠标指向记事本为例.如要测试,请先把鼠标移动到记事本编辑区再按下热键
  2. //声明全局变量
  3. 变量 窗口句柄 = 数组()  //保存窗口句柄的数组
  4. 变量 线程句柄 = 数组()  //保存线程句柄的数组
  5. 变量 dm = 数组()  //保存dm对象的数组

  6. //===================================启动热键===================================\\
  7. 功能 hotkey0_onhotkey()  //启动热键
  8.     蜂鸣(800,120)  //响一下表示热键有效
  9.     变量 句柄 = 获取句柄()  //调用获取句柄功能  并返回句柄
  10.     如果(句柄 > 0)  //判断句柄是否大于0
  11.         窗口绑定(句柄)  //调用窗口绑定功能 同时把句柄这个参数传递过去
  12.     结束
  13. 结束

  14. //===================================单停热键===================================\\
  15. 功能 hotkey1_onhotkey()  //单停热键
  16.     蜂鸣(800,120)  //响一下表示热键有效
  17.     变量 句柄 = 窗口获取鼠标所在句柄()//鼠标指向获取窗口句柄
  18.     变量 索引 = 数组查找(窗口句柄,句柄)  //调用数组查找功能 返回索引值
  19.     如果(索引 != -1)  //判断句柄是否存在数组里   -1表示这个窗口当前没有脚本在运行  != -1表示这个窗口正在运行脚本
  20.         dm[索引].UnBindWindow() //大漠窗口解绑
  21.         线程关闭(线程句柄[索引])//停止该窗口线程
  22.         窗口句柄[索引] = null  //把该窗口句柄元素清空
  23.         线程句柄[索引] = null  //把该线程句柄元素清空
  24.         dm[索引]  = null  //把该大漠对象元素清空
  25.     否则
  26.         消息框("该窗口未执行脚本")  //弹出消息框提示
  27.     结束
  28. 结束

  29. //===================================全停热键===================================\\
  30. 功能 hotkey2_onhotkey()  //全挺热键
  31.     蜂鸣(800,120)  //响一下表示热键有效
  32.     变量 大小 = 数组大小(窗口句柄) //获得数组的大小
  33.     遍历(变量 i = 0; i < 大小; i++)  //有多少个窗口就执行多少遍
  34.         dm[i].UnBindWindow() //大漠窗口解绑
  35.         线程关闭(线程句柄[i])  //关闭线程,结束脚本
  36.     结束
  37.     数组清空(窗口句柄)  //清空窗口句柄数组
  38.     数组清空(线程句柄)  //清空线程句柄数组
  39.     数组清空(dm)  //清空大漠对象数组
  40. 结束

  41. //===================================获取窗口句柄===================================\\
  42. 功能 获取句柄()
  43.     变量 游戏窗口类名 = "Edit" //以记事本为例
  44.     变量 句柄 = 窗口获取鼠标所在句柄() //鼠标指向获取窗口句柄
  45.     如果(句柄 > 0)
  46.         如果(字符串查找(窗口获取类名(句柄),游戏窗口类名) != -1)//判断是否是记事本窗口 也可以通过标题来判断
  47.             如果(数组查找(窗口句柄,句柄) == -1)//判断窗口句柄是否重复 -1表示该窗口是新窗口
  48.                
  49.                 如果(数组查找(窗口句柄,null) == -1)//判断是否要添加新窗口元素 -1表示添加新元素
  50.                     数组追加元素(窗口句柄,null) //执行窗口追加元素
  51.                 结束
  52.                
  53.                 //下面把得到的窗口句柄存放进数组里
  54.                 变量 大小 = 数组大小(窗口句柄)  //得到数组的大小
  55.                 如果(大小 > 0)
  56.                     遍历(变量 i = 0; i < 大小; i++)  //有多少个数组元素就执行多少遍
  57.                         如果(窗口句柄[i] == null)//判断数组里面有没有空位 有就把句柄存放里面
  58.                             窗口句柄[i] = 句柄  //把句柄赋值给数组成员
  59.                             返回 窗口句柄[i]  //返回 窗口句柄[i]
  60.                         结束
  61.                     结束
  62.                 结束
  63.                
  64.                
  65.             否则
  66.                 消息框("请不要对该游戏窗口重复运行脚本","提示") //消息框提示
  67.                 返回 -1
  68.             结束
  69.             
  70.         否则
  71.             消息框("窗口不正确","提示") //消息框提示
  72.             返回 -1  
  73.         结束
  74.     结束
  75.    
  76. 结束

  77. //===================================主窗口绑定===================================\\
  78. 功能 窗口绑定(句柄)
  79.     变量 索引 = 数组查找(窗口句柄,句柄)//获取句柄在数组里的索引
  80.     dm[索引] = 插件("dm.dmsoft") //创建大漠对象
  81.    
  82.     //    dm[索引].SetShowErrorMsg(0)        //设置是否弹出错误信息
  83.    
  84.     dm[索引].SetPath(获取资源路径("rc:"))//设置大漠资源路径
  85.     dm[索引].SetDict(0,"test.txt")//设置大漠默认字库
  86.    
  87.     //    dm[索引].SetDict(0,获取资源路径("rc:test.txt"))//设置大漠默认字库
  88.     traceprint(获取资源路径("rc:test.txt"))
  89.    
  90.     var ret = dm[索引].BindWindow(句柄,"normal","normal","normal",0)//绑定窗口
  91.     如果(ret != 1)
  92.         调试输出("绑定窗口失败")
  93.         返回 -1
  94.     结束
  95.     调试输出("绑定窗口成功")
  96.     线程句柄[索引] = 线程开启("主程序",索引)//开启线程   
  97. 结束

  98. //===================================主程序===================================\\
  99. 功能 主程序(索引)
  100.     循环(真)//死循环
  101.         窗口发送字符串(窗口句柄[索引],索引)
  102.         等待(500)
  103.     结束
  104. 结束

  105. //===================================数组查找===================================\\
  106. 功能 数组查找(名称,要查找的内容) //这是一个自己封装的函数,和4.0版本中的函数 数组空间.查找() 起到一样的作用.
  107.     变量 大小 = 数组大小(名称)  //得到数组的大小
  108.     如果(大小 == 0)  //判断这个数组是不是空的
  109.         返回 -1  //既然是个空数组 那么查找任何内容都是徒劳 所以是找不到的 返回 -1
  110.     否则
  111.         //        变量 值,key
  112.         遍历(变量 i = 0; i < 大小; i++)  //遍历所有的数组成员
  113.             //            数组获取元素(名称,i,值,key)
  114.             如果(要查找的内容 == 名称[i])  //看看要查找的内容是不是和某个数组成员相等.相等就说明要查找的内容在数组里
  115.                 返回 i  //返回索引
  116.             结束
  117.         结束
  118.         //这里是遍历完所有的数组成员后 还是没有相等的内容 就说明数组里面没有要查找的内容 返回-1
  119.         返回 -1
  120.     结束
  121. 结束

  122. //===================================热键0失去焦点事件===================================\\
  123. 功能 hotkey0_killfocus()  //自定义热键0
  124.     热键销毁("hotkey0")   //先销毁旧的热键0键码
  125.     热键注册("hotkey0")   //再注册新的热键0键码
  126. 结束

  127. //===================================热键1失去焦点事件===================================\\
  128. 功能 hotkey1_killfocus()  //自定义热键1
  129.     热键销毁("hotkey1")   //先销毁旧的热键1键码
  130.     热键注册("hotkey1")   //再注册新的热键1键码  
  131. 结束

  132. //===================================热键2失去焦点事件===================================\\
  133. 功能 hotkey2_killfocus()  //自定义热键2
  134.     热键销毁("hotkey2")   //先销毁旧的热键2键码
  135.     热键注册("hotkey2")   //再注册新的热键2键码
  136. 结束



  137. function button0_click()
  138.     //这里添加你要执行的代码
  139.     Aero特效()
  140.     橙色()
  141. end
复制代码
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

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

GMT+8, 2025-9-21 19:50 , Processed in 0.230348 second(s), 24 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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