TC官方合作论坛

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

[已解决] 求大神指点,已经代码~~错在哪里了

[复制链接]
跳转到指定楼层
楼主
发表于 2013-5-29 10:28:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

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

x
空间 小桌辅助
//默认空间
ts=com("ts.tssoft")
dm=com("dm.dmsoft")

窗口1,窗口2,线程句柄1,线程句柄2,线程1,线程2

功能 热键4_热键()
//这里添加你要执行的代码
辅助.等待(1000)
窗口1=dm.GetMousePointWindow()
辅助.等待(1000)
辅助.消息框(窗口1)
辅助.等待(1000)
窗口2=dm.GetMousePointWindow()
辅助.等待(1000)
辅助.消息框(窗口2)
功能结束


功能 按钮3_点击()    //启动游戏
//这里添加你要执行的代码
线程句柄1=线程.开启("小桌梦猪辅助.绑定","")
功能结束
功能 绑定()
辅助.等待(1000)   
ts.BindWindow(窗口1,"dx","dx","dx",1)
辅助.等待(2000)
线程1=线程.开启("小桌梦猪辅助.整理窗口队长","")
辅助.等待(500)
ts.BindWindow(窗口2,"dx","dx","dx",1)
辅助.等待(2000)
线程2=线程.开启("小桌梦猪辅助.整理窗口","")
辅助.等待(500)  
线程.关闭(线程句柄2)
功能结束
功能 整理窗口() //启动队员
intX,intY
辅助.等待(1000)
ts.FindPic(0,0,2000,2000,"d:\\门.bmp","203040",0.9,0,intX,intY)
if(intX >= 0 && intY >= 0)
ts.MoveTo(5,174)
辅助.等待(250)
ts.LeftClick()
辅助.等待(300)
endif
功能结束

功能 整理窗口队长()  //队长启动
intX,intY
辅助.等待(1000)
ts.FindPic(0,0,2000,2000,"d:\\门.bmp","203040",0.9,0,intX,intY)
if(intX >= 0 && intY >= 0)
ts.MoveTo(5,174)
辅助.等待(250)
ts.LeftClick()
辅助.等待(300)
endif
ts.FindPic(0,0,2000,2000,"d:\\空格.bmp","203040",0.9,0,intX,intY)
if(intX >= 0 && intY >= 0)
ts.MoveTo(793,142)
辅助.等待(250)
ts.LeftClick()
辅助.等待(300)
ts.LeftClick()
辅助.等待(300)
endif   
功能结束


我的思路是:用鼠标去确定2个窗口句柄...然后再启动~~~我遇到的问题是启动后 窗口1(队长号没反应)窗口2(队员号)执行的是队长的程序,怎么回事? 是我哪里搞错了还是?
还是说我依次绑定2个窗口必须的分开吗?我怀疑是不是窗口2把窗口1给替换掉了?迷糊了




回复

使用道具 举报

沙发
发表于 2013-5-29 13:20:04 | 只看该作者
写法与思路的纠正:
第一```鼠标获取窗口句柄```这个可以考虑换一下``用标题或者类名来枚举好一点````因为看了你上面的代码``不然不智能```
第二:绑定窗口的操作建议在线程内执行.你要问为什么.接下来看你的错误你就知道了为什么要写的线程内了```

错误纠正````

你说到了```为什么启动后 窗口1(队长号没反应)窗口2(队员号)执行的是队长的程序.
因为你的TS插件只创建了一个对象``一个对象只能对应绑定一个窗口`然后接下来这个对象下的所有操作都会在绑定的窗口下执行```
你会问我绑定了2个窗口呀```
是的``你的确绑定了2个窗口```但是都是一个插件对象绑定的```第一个绑定和第二个绑定都是一个对于`所以第二个覆盖了第一个`导致了以下插件的操作都在第二个窗口下执行``

解决方法```

在线程内创建独立的插件对应``然后用独立的插件对应绑定独立的窗口`然后再执行```

代码如下:

功能 按钮3_点击()    //启动游戏
//这里添加你要执行的代码
线程句柄1=线程.开启("小桌梦猪辅助.队长启动","窗口句柄1")
线程句柄2=线程.开启("小桌梦猪辅助.队员启动","窗口句柄2")
功能结束

功能 队长启动(窗口句柄)
ts1=com("ts.tssoft")
ts1.BindWindow(窗口句柄1,"dx","dx","dx",1)
辅助.等待(2000)
ts1.MoveTo(555,555)
功能结束

功能 队员启动(窗口句柄)
ts2=com("ts.tssoft")
ts2.BindWindow(窗口句柄1,"dx","dx","dx",1)
辅助.等待(2000)
ts2.MoveTo(888,888)
功能结束
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2013-5-29 13:34:21 | 只看该作者
回复 2楼3825589的帖子

非常感谢你的指点,一会给你采纳,不过看了你的方法,我有个小小的疑问不知道怎么解决:假如我这2个窗口的刚开始执行的不同的动作,当达到要求后再去执行相同的动作~~然后我把相同的动作做好了一个封装  例如:功能 升级()
                                                ts.MoveTo(555,555)                  
                                            功能结束
           那像这个封装该怎么去写 , 我看了你一个是ts1 一个是ts2.. 显然上面的ts.MoveTo(555,555) 应该不会去执行吧~~大神这种情况能简单的分析说下吗
回复 支持 反对

使用道具 举报

地板
发表于 2013-5-29 13:44:58 | 只看该作者
这个问题我也究竟````

我原来是写按键精灵的```

按键精灵线程内部有个线程内部的变量```可以在线程内调用的所有函数里自由的传递```

而TC不能```必须传参````不然线程内的变量无法传递```

所以你把插件名传递过去就好了```
例如``

功能 鼠标移动(插件对象,X,Y)
插件对象.MoveTo(x,y)
回复 支持 反对

使用道具 举报

5#
发表于 2013-5-29 13:52:22 | 只看该作者
最后吐槽一下吧````

希望TC能加入局部变量概念```

让线程----功能内的变量能够在调用其他函数的时候传递```而不需要传参````那样写法简便很多了```
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

关闭

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

GMT+8, 2025-10-4 11:34 , Processed in 0.216040 second(s), 24 queries .

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

© 2001-2013 Comsenz Inc.

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