TC官方合作论坛

标题: 脚本热键暂停问题 [打印本页]

作者: 33333    时间: 2014-8-2 01:13
标题: 脚本热键暂停问题
本帖最后由 33333 于 2014-8-2 02:15 编辑

空间 a1
//默认空间
变量 线程句柄 = 0
//开始按钮_点击操作
功能 开始_点击()
   
功能结束

//退出按钮_点击操作
功能 退出_点击()
   
    辅助.退出()
功能结束

功能 吃药()
    循环(真)
        颜色值 = 图像.坐标点取色(810,98)
        如果(颜色值 == #3FABB6)
            键盘.按键(55)
        如果结束
    循环结束
功能结束

功能 热键0_热键()
    //这里添加你要执行的代码
    线程句柄 = 线程.开启("a1.吃药","")
功能结束


功能 热键1_热键()
    //这里添加你要执行的代码
    线程.关闭(线程句柄)
功能结束

空间结束
//空间结束语句


很简单的脚本 设置热键0是1 热键1是2
如果频繁进行按键12开启关闭的操作 则按2中止不了脚本循环 脚本继续运行 只有退出才能结束脚本运行
这是什么情况呢= =

作者: 360307327    时间: 2014-8-2 01:29
你按一次启动时    开启的线程句柄会存在你的 全局变量 线程句柄  里   你再次按 开启   全局变量 线程句柄     里存的是最后一次启动的线程句柄     你在按关闭也只能关 最后一次启动线程
作者: 33333    时间: 2014-8-2 02:10
本帖最后由 33333 于 2014-8-2 02:55 编辑
360307327 发表于 2014-8-2 01:29
你按一次启动时    开启的线程句柄会存在你的 全局变量 线程句柄  里   你再次按 开启   全局变量 线程句柄 ...

那该怎么样修改 按关闭一次关闭完所有已启动线程 或者怎么能做到按启动只启动一次全局变量线性句柄呢?
作者: q273814    时间: 2014-8-2 08:10
你按下一次开启 线程句柄就是开启的线程了 在关闭前你又按了一次开启 线程句柄就变成第二次的线程句柄了 第一次的就再也关不掉了
建议用一个热键 不要用2个 如果是关闭状态 那就开启 如果是开启状态那就关闭 自己做个判断
作者: b44412545    时间: 2014-8-2 12:07
33333 发表于 2014-8-2 02:10
那该怎么样修改 按关闭一次关闭完所有已启动线程 或者怎么能做到按启动只启动一次全局变量线性句柄呢? ...

在你的线程里加一句循环:      线程.获取线程句柄       然后有线程在开启状态时,线程的句柄就是可用的,你再关闭线程,暂停线程,就没事了
作者: 33333    时间: 2014-8-3 22:57
b44412545 发表于 2014-8-2 12:07
在你的线程里加一句循环:      线程.获取线程句柄       然后有线程在开启状态时,线程的句柄就是可用的 ...

= = 好复杂的样子 求具体修改 多谢了
作者: b44412545    时间: 2014-8-4 12:42
...额,好吧
  1. 空间 我的空间
  2. var THwnd

  3. 功能 热键0_热键()
  4. 线程.开启("我的空间.线程One","")
  5. 功能结束

  6. 功能 线程One()
  7. while(true)
  8. THwnd=线程.获得当前句柄()
  9. 辅助.消息框("此线程还存在")
  10. endwhile
  11. 功能结束


  12. 功能 热键1_热键()
  13. 线程.关闭(THwnd)
  14. 功能结束

  15. 空间结束
复制代码






作者: 33333    时间: 2014-8-5 02:35
b44412545 发表于 2014-8-4 12:42
...额,好吧

空间 a1
var THwnd
//默认空间
变量 线程句柄 = 0
//开始按钮_点击操作
功能 开始_点击()
   
功能结束

//退出按钮_点击操作
功能 退出_点击()
   
    辅助.退出()
功能结束


功能 热键0_热键()
    //这里添加你要执行的代码
    线程.开启("a1.加血","")
功能结束


功能 加血()
    while(true)
        THwnd=线程.获得当前句柄()
        颜色值 = 图像.坐标点取色(336,977)
        如果(颜色值 == #E6EEF6)
            键盘.按键(55)
        如果结束
    endwhile
功能结束


功能 热键1_热键()
    //这里添加你要执行的代码
    线程.关闭(THwnd)   
功能结束
//空间结束语句

空间结束


我按照大大的方法修改好了= = 然后发现 虽然按一下开启线程 会立刻开启 但是关闭线程的时候 如果多按了几次开启的话 关闭线程也需要按几次 很不方便
麻烦大大 能不能给点建议 怎么让脚本 无论按一下或几下开启 按一下关闭就可以关闭所有线程呢?
因为是新手 所以真的麻烦了 鞠躬=-=

作者: b44412545    时间: 2014-8-5 13:45
33333 发表于 2014-8-5 02:35
空间 a1
var THwnd
//默认空间

呵呵,一定要采纳额
作者: b44412545    时间: 2014-8-5 13:53

  1. 空间 wod空间
  2. var THwnd

  3. 功能 热键0_热键()
  4.     线程.开启("wod空间.线程One","")
  5. 功能结束

  6. 功能 线程One()
  7.     while(true)
  8.         THwnd=线程.获得当前句柄()
  9.         //辅助.消息框("此线程还存在")
  10.         调试输出("此线程还存在"&THwnd)
  11.     endwhile
  12. 功能结束


  13. 功能 热键1_热键()
  14. while(THwnd>0)
  15.     while(THwnd>0)
  16.         线程.关闭(THwnd)   
  17.         THwnd = 0
  18.     endwhile
  19. help.sleep(200)
  20. endwhile
  21. 功能结束


  22. 空间结束
复制代码



由于消息框会导致线程的暂停,所以把消息框改成了调试输出,就不暂停了

热键1改成了双重循环,是为了防止漏掉线程



作者: 33333    时间: 2014-8-5 19:09
b44412545 发表于 2014-8-5 13:53
由于消息框会导致线程的暂停,所以把消息框改成了调试输出,就不暂停了

热键1改成了双重循环,是为了 ...

大大可能没理解我的意思
我想表达的是= = 无论前面开启多少线程 怎么样让热键1 可以按一下关闭所有线程 这个用tc可以做到吗?
作者: b44412545    时间: 2014-8-5 19:45
33333 发表于 2014-8-5 19:09
大大可能没理解我的意思
我想表达的是= = 无论前面开启多少线程 怎么样让热键1 可以按一下关闭所有线程  ...

...对啊,你看热键1的代码
作者: 33333    时间: 2014-8-5 20:15
b44412545 发表于 2014-8-5 19:45
...对啊,你看热键1的代码

help.sleep(200)这句语句是什么意思呢= =

作者: b44412545    时间: 2014-8-5 22:26
但凡是线程的执行,总有执行的延迟,这个200可以无限变小,但最好保留
作者: 33333    时间: 2014-8-6 00:11
b44412545 发表于 2014-8-5 22:26
但凡是线程的执行,总有执行的延迟,这个200可以无限变小,但最好保留

好的 终于全部弄明白了 真的非常感谢 再次鞠躬
作者: b44412545    时间: 2014-8-6 14:38
嗯,恭喜。。。




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1