TC官方合作论坛

 找回密码
 立即注册
查看: 2275|回复: 8

[问题] 没治了,调试脚本动不动就无响应,是代码问题?还是软件问题?

[复制链接]
发表于 2015-3-21 17:34:25 | 显示全部楼层 |阅读模式

马上加入TC

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

x
本帖最后由 mitchs 于 2015-3-21 17:55 编辑

TC很好爱你不容易啊............

复制代码
  1. //创建大漠对象
  2. 变量 dm=插件("dm.dmsoft")
  3. 变量 x1,y1,x2,y2,intx,inty,retarr
  4. 功能 启动_点击()
  5.     调试输出("开始判断游戏路径是否正确")
  6.     如果((文件是否存在(浏览框获取文本("路径")))==假)
  7.         消息框("您选择的路径不正确,请重新选择")
  8.         返回
  9.     结束
  10.    
  11.     变量 数量=下拉框获取选项("下拉框0")+1
  12.     变量 hwnd = dm.EnumWindowByProcess("xy2_launch.exe","新大话西游2欢迎页","",1+4)
  13.     调试输出("欢迎页句柄为:"&hwnd)
  14.     变量 hwnds = dm.EnumWindow(0,"新大话西游2 ($Revision:","",1)
  15.     调试输出("游戏句柄为:"&hwnds)
  16.     变量 n = 字符串分割(hwnds,",",retarr)
  17.     调试输出("游戏数量为:"&n)
  18.     如果(hwnd=="" && n==0)
  19.         调试输出("条件1")
  20.         进程打开(浏览框获取文本("路径"),1)
  21.         等待(500)
  22.         循环(真)
  23.             hwnd = dm.EnumWindowByProcess("xy2_launch.exe","新大话西游2欢迎页","",1+4)
  24.             如果(hwnd!="")
  25.                 等待(500)
  26.                 遍历(变量 i = 0; i < 数量; i++)
  27.                     进程打开(浏览框获取文本("路径"),1)
  28.                     等待(500)
  29.                 结束
  30.                 变量 hwndx = dm.EnumWindowByProcess("xy2_launch.exe","X","",1+4)
  31.                 dm.BindWindowEx(hwndx,"normal","windows","normal","",0)
  32.                 等待(500)
  33.                 dm.MoveTo(5,5)
  34.                 等待(100)
  35.                 dm.LeftClick()
  36.                 等待(500)
  37.                 dm.UnBindWindow()
  38.                 跳出
  39.             结束
  40.             等待(200)
  41.         结束
  42.     否则如果(hwnd>0 && n==0)
  43.         调试输出("条件2")
  44.         遍历(变量 i = 0; i < 数量; i++)
  45.             进程打开(浏览框获取文本("路径"),1)
  46.             等待(500)
  47.         结束
  48.         变量 hwndx = dm.EnumWindowByProcess("xy2_launch.exe","X","",1+4)
  49.         dm.BindWindowEx(hwndx,"normal","windows","normal","",0)
  50.         等待(500)
  51.         dm.MoveTo(5,5)
  52.         等待(100)
  53.         dm.LeftClick()
  54.         等待(500)
  55.         dm.UnBindWindow()
  56.     否则如果(hwnd=="" && 0<n<数量)
  57.         调试输出("条件3")
  58.         进程打开(浏览框获取文本("路径"),1)
  59.         等待(500)
  60.         循环(真)
  61.             hwnd = dm.EnumWindowByProcess("xy2_launch.exe","新大话西游2欢迎页","",1+4)
  62.             如果(hwnd!="")
  63.                 等待(500)
  64.                 遍历(变量 i = 0; i < (数量-n); i++)
  65.                     进程打开(浏览框获取文本("路径"),1)
  66.                     等待(500)
  67.                 结束
  68.                 变量 hwndx = dm.EnumWindowByProcess("xy2_launch.exe","X","",1+4)
  69.                 dm.BindWindowEx(hwndx,"normal","windows","normal","",0)
  70.                 等待(500)
  71.                 dm.MoveTo(5,5)
  72.                 等待(100)
  73.                 dm.LeftClick()
  74.                 等待(500)
  75.                 dm.UnBindWindow()
  76.                 跳出
  77.             结束
  78.             等待(200)
  79.         结束
  80.     否则如果(hwnd>0 && 0<n<数量)   
  81.         调试输出("条件4")
  82.         遍历(变量 i = 0; i < (数量-n); i++)
  83.             进程打开(浏览框获取文本("路径"),1)
  84.             等待(500)
  85.         结束
  86.         变量 hwndx = dm.EnumWindowByProcess("xy2_launch.exe","X","",1+4)
  87.         dm.BindWindowEx(hwndx,"normal","windows","normal","",0)
  88.         等待(500)
  89.         dm.MoveTo(5,5)
  90.         等待(100)
  91.         dm.LeftClick()
  92.         等待(500)
  93.         dm.UnBindWindow()
  94.     结束
  95.     等待(1000)
  96.     循环(真)
  97.         hwnds = dm.EnumWindow(0,"新大话西游2 ($Revision:","",1)
  98.         调试输出(hwnds)
  99.         n = 字符串分割(hwnds,",",retarr)
  100.         调试输出("已打开的游戏数量为:"&n)
  101.         如果(n=数量)
  102.             跳出
  103.         结束
  104.         等待(500)
  105.     结束
  106.     等待(500)
  107.     遍历(变量 i = 0; i < 数量; i++)
  108.         调试输出(retarr[i])
  109.         窗口激活(retarr[i])
  110.         等待(100)
  111.         dm.GetClientRect(retarr[i],x1,y1,x2,y2)
  112.         调试输出(x1&","&y1&","&x2&","&y2)
  113.         等待(100)
  114.         找("一进")
  115.         等待(500)
  116.         找("一进")
  117.         等待(500)
  118.     结束
  119. 结束  
  120. 功能 找(图片名)
  121.     调试输出("x1="&x1)
  122.     循环(真)
  123.         dm.FindPic(x1,y1,x2,y2,"C:\\测试1\\测试1\\资源\"&图片名&".bmp","000000",0.9,0,intx,inty)
  124.         如果(intx>0)
  125.             dm.MoveTo(intx,inty)
  126.             等待(100)
  127.             dm.LeftClick()
  128.             等待(100)
  129.             跳出
  130.         结束
  131.         等待(100)
  132.     结束
  133. 结束

  134. 功能 退出_点击()
  135.     dm.UnBindWindow()
  136.     退出()
  137. 结束


  138. 功能 启动热键_热键()
  139.     启动_点击()
  140. 结束
复制代码

回复

使用道具 举报

发表于 2015-3-21 17:54:27 | 显示全部楼层
建议把循环代码写到线程里面去操作,不然会有卡界面的问题
回复 支持 反对

使用道具 举报

发表于 2015-3-21 18:00:50 | 显示全部楼层
控件事件代码太长  你用个线程启动  在测试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-21 18:03:13 | 显示全部楼层
TC 发表于 2015-3-21 17:54
建议把循环代码写到线程里面去操作,不然会有卡界面的问题

谢谢,我试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-21 18:03:31 | 显示全部楼层
TC 发表于 2015-3-21 17:54
建议把循环代码写到线程里面去操作,不然会有卡界面的问题

谢谢老大,我试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-21 19:04:57 | 显示全部楼层
TC 发表于 2015-3-21 17:54
建议把循环代码写到线程里面去操作,不然会有卡界面的问题

搞定了...就挪挪代码的事这么大差距,小白蛋痛了...
回复 支持 反对

使用道具 举报

发表于 2015-3-21 19:40:55 | 显示全部楼层
这写的太牛鼻了,直接一个功能全写完了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-21 23:17:07 | 显示全部楼层
本帖最后由 mitchs 于 2015-3-21 23:22 编辑
perekin 发表于 2015-3-21 19:40
这写的太牛鼻了,直接一个功能全写完了

我用按键这么写一点事没有,,,而且这对于大型脚本只是皮毛点的功能,要是大型脚本得开多少线程,我觉得线程开太多会有点乱,而且不好控制代码流程,这对于像我这样刚接触tc的会有很大阻碍,,,
回复 支持 反对

使用道具 举报

发表于 2015-3-22 02:34:00 | 显示全部楼层
mitchs 发表于 2015-3-21 23:17
我用按键这么写一点事没有,,,而且这对于大型脚本只是皮毛点的功能,要是大型脚本得开多少线程,我觉得 ...

按键就是默认帮你开了一个线程
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-5-19 03:19 , Processed in 0.042809 second(s), 23 queries .

Powered by 海安简单软件服务部

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

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