TC官方合作论坛

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

[已解决] 为什么按两下启动热键会出问题

[复制链接]
跳转到指定楼层
楼主
发表于 2016-8-13 15:15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

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

x
按两下启动热键时,脚本就会一直开启无法关闭,结束键失效,这个是视频教程6部曲第5部里的一段代码
功能 执行()
    变量 x1=编辑框获取文本("编辑框0")
    变量 y1=编辑框获取文本("编辑框1")
    变量 x2=编辑框获取文本("编辑框3")
    变量 y2=编辑框获取文本("编辑框2")
    如果(x1==0||y1==0||x2==0||y2==0)
        消息框("不能为空!")
    否则
        
        循环(真)
            //第一个点
            鼠标移动(x1,y1)
            等待(1000)
            
            
            //第二个点
            鼠标移动(x2,y2)
            等待(1000)
        结束
    结束
结束
变量 线程ID,是否暂停=假
//启动_热键操作
功能 启动_热键()
    线程ID=线程开启("执行","")
结束
//终止热键操作
功能 终止_热键()
    线程关闭(线程ID)
结束


功能 暂停_热键()
    如果(是否暂停)
        是否暂停=假
        线程恢复(线程ID)
    否则
        是否暂停=真
        线程暂停(线程ID)
    结束
   
结束

回复

使用道具 举报

沙发
发表于 2016-8-13 15:52:06 | 只看该作者
因为关闭线程需要句柄,按两次热键会启动两个线程,得到两个句柄,而保存线程句柄的变量只有一个,所以后一个句柄会覆盖前一个。所以前一个线程句柄消失了,就没法关闭了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2016-8-13 17:07:36 | 只看该作者
言术 发表于 2016-8-13 15:52
因为关闭线程需要句柄,按两次热键会启动两个线程,得到两个句柄,而保存线程句柄的变量只有一个,所以后一 ...

那这个问题怎么解决呢
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2016-8-13 17:09:34 | 只看该作者
言术 发表于 2016-8-13 15:52
因为关闭线程需要句柄,按两次热键会启动两个线程,得到两个句柄,而保存线程句柄的变量只有一个,所以后一 ...

差不多应该明白了,执行一次之后,销毁热键行吧
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2016-8-13 17:14:36 | 只看该作者
言术 发表于 2016-8-13 15:52
因为关闭线程需要句柄,按两次热键会启动两个线程,得到两个句柄,而保存线程句柄的变量只有一个,所以后一 ...

方法应该有好几个吧,判断线程是否被开启过,事件对象防多开
回复 支持 反对

使用道具 举报

6#
发表于 2016-8-13 19:42:52 来自手机 | 只看该作者


我一般这样写。稳当稳当的。


var 线程ID, 循环开关
功能 执行()
  循环开关 = 1
while(循环开关)
调试输出("111111")
sleep(100)
end
结束

功能 启动_热键()
  if(线程ID == "")
  线程ID = 线程开启("执行", "")
end
结束
功能 终止_热键()
  循环开关 = 0
  线程关闭(线程ID)
  线程ID = ""
结束
功能 ****_初始化()
  线程ID = ""
结束
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2016-8-13 19:45:33 | 只看该作者
剑仙十号 发表于 2016-8-13 19:42
我一般这样写。稳当稳当的。

你这个我还没看等下看看,我把这句事件打开(线程ID)改成线程获取状态,现在一点问题没有了,怎么按都不会有问题了,不过还是感谢解答!
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2016-8-13 19:51:02 | 只看该作者
zxczxc1968531 发表于 2016-8-13 19:45
你这个我还没看等下看看,我把这句事件打开(线程ID)改成线程获取状态,现在一点问题没有了,怎么按都不会 ...

你这个也是判断线程状态,根据状态做启动相应操作,道理是一样的,不过采纳不了你,没显示采纳两字
回复 支持 反对

使用道具 举报

9#
发表于 2016-8-13 19:53:09 来自手机 | 只看该作者
zxczxc1968531 发表于 2016-8-13 19:45
你这个我还没看等下看看,我把这句事件打开(线程ID)改成线程获取状态,现在一点问题没有了,怎么按都不会 ...

你这样写问题多多。

我曾经这样写,对同一个窗口,多个线程的脚本。
脚本一直无法停止。

回复 支持 反对

使用道具 举报

10#
发表于 2016-8-13 19:54:31 来自手机 | 只看该作者
只是一个线程的脚本,却可以停止。

tc获取线程状态,怪怪的。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

关闭

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

GMT+8, 2025-9-20 07:21 , Processed in 0.122737 second(s), 23 queries .

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

© 2001-2013 Comsenz Inc.

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