TC官方合作论坛
标题:
关于多线程的关闭
[打印本页]
作者:
cylhb
时间:
2012-2-18 17:09
标题:
关于多线程的关闭
刚用TC。
测试的时候用大漠绑定N个记事本,开启N个线程,输入文本测试
文本输入是可以了,不过有点问题
1.线程开启好像很慢?全部绑定完毕后等了好一会才开始输入,并且有一次测试中每个线程开启的时间间隔是比较久的。
2.线程的关闭,线程关闭在窗口销毁这一事件中是否不行???我用按钮手动关闭就可以,在窗口销毁事件中貌似就不行。。。
3.程序退出时,提示:无法删除****多线程多开:文件目录不是空的 (多线程多开是我的空间命名,****是不固定的数字,不知道是不是线程句柄。)
作者:
cylhb
时间:
2012-2-18 17:12
第3点我知道是什么原因了。是因为大漠没有解绑。。。
但是第2点还是问题,无法再销毁事件中使用。
作者:
cylhb
时间:
2012-2-18 17:21
贴一下源码-。-附件大,传不上。。话说,为什么生成的exe会这么大呢。。。刚使用,语法什么的乱,求指点
//=============================================================================================
#import "dm.dmsoft" dm
空间 多线程多开
//定义默认空间
//全局变量
整型 窗口数量
整型 线程_窗口句柄
整型 线程编号
功能 逻辑型 线程方法1()
//开始绑定窗口
整型 线程内_句柄
整型 绑定是否成功
线程内_句柄=线程_窗口句柄
//辅助.消息框(转换.整型转字符型(线程内_句柄))
循环(真)
绑定是否成功=dm.BindWindow(线程内_句柄,"dx","windows","windows",0)
如果(绑定是否成功==0)
辅助.消息框("绑定失败!")
辅助.退出()
否则
标签.设置文本("标签2","绑定成功!")
跳出
如果结束
循环结束
循环(真)
标签.设置文本("标签2","进入测试")
多线程多开.输入测试(线程内_句柄) //子线程主体部分
辅助.等待(10)
循环结束
//循环结束语句
返回 真
//函数返回语句
功能结束
//功能函数用完后结束该功能
功能 逻辑型 输入测试(整型 线程内_句柄)
整型 句柄
字符型 临时字符
句柄=线程内_句柄
临时字符=字符串.连接("句柄:",转换.整型转字符型(句柄))
临时字符=字符串.连接(临时字符,",测试成功!!")
dm.SendString(句柄,临时字符)
辅助.等待(50)
dm.KeyPress(13)
返回 真
功能结束
功能 逻辑型 开始_点击()
//这里添加你要执行的代码
多线程多开.注册插件()
辅助.等待(100)
多线程多开.获取句柄()
辅助.等待(100)
多线程多开.多开多线程绑定()
返回 真
//函数返回语句
功能结束
功能 逻辑型 退出_点击()
//这里添加你要执行的代码
辅助.退出()
返回 真
//函数返回语句
功能结束
功能 逻辑型 注册插件()
逻辑型 是否成功=辅助.是否注册("dm.dmsoft")
如果(是否成功)
//辅助.消息框("插件已注册")
标签.设置文本("标签0","注册插件成功,按HOME开始获取窗口句柄")
否则
辅助.注册插件("rc:dm.dll",真) //rc: 使用资源中的文件
如果结束
返回 真
功能结束
功能 逻辑型 获取句柄()
整型 键值
整型 序号
整型 窗口句柄
字符型 窗口数量2
序号=0
窗口数量2=编辑框.获得文本("编辑框0")
窗口数量=转换.字符型转整型(窗口数量2,0)
循环(序号<窗口数量)
//当序号值小于26时,进入循环
//运行到这里暂停,等待按键响应
键值=键盘.等待按键()
如果(键值==36) //HOME键
窗口句柄=dm.GetMousePointWindow()//获取鼠标所指向的窗口句柄
列表框.增加文本("列表框0",转换.整型转字符型(窗口句柄))
序号=序号+1
辅助.等待(200)
如果结束
循环结束
标签.设置文本("标签0","句柄获取结束!")
返回 真
功能结束
功能 逻辑型 多开多线程绑定()
整型 序号
字符型 句柄
标签.设置文本("标签0","多线程绑定开启!")
序号=0
循环(序号<窗口数量)
句柄=列表框.获得文本("列表框0",序号)
线程_窗口句柄=转换.字符型转整型(句柄,0)
// 辅助.消息框(转换.整型转字符型(线程_窗口句柄))
线程编号=线程.开启("多线程多开.线程方法1")
辅助.等待(50)
列表框.增加文本("列表框1",转换.整型转字符型(线程编号))
//标签.设置文本("标签0",字符串.连接("开启",句柄))
序号=序号+1
循环结束
返回 真
功能结束
功能 逻辑型 按钮1_点击()
//这里添加你要执行的代码
整型 序号
字符型 线程句柄
序号=0
dm.UnBindWindow()
循环(序号<窗口数量)
线程句柄=列表框.获得文本("列表框1",序号)
线程.关闭(转换.字符型转整型(线程句柄,0))
序号=序号+1
循环结束
返回 真
功能结束
功能 逻辑型 销毁()
//这里添加你要执行的代码
整型 序号
字符型 线程句柄
序号=0
dm.UnBindWindow()
循环(序号<窗口数量)
线程句柄=列表框.获得文本("列表框1",序号)
线程.关闭(转换.字符型转整型(线程句柄,0))
序号=序号+1
循环结束
返回 真
功能结束
空间结束
作者:
TC
时间:
2012-2-18 19:06
1,开启线程的速度问题,我想主要是因为你使用了大漠,线程要初始化 插件 环境,你去掉插件看看
2,线程关闭在窗口销毁这一事件中,不是不行,其实是这样的,线程关闭,线程不是马上停止,它要做销毁工作,但是如果在线程销毁前,EXE进程已经销毁了,那明显会报错,所以你要确定是线程销毁了,在执行退出操作,比如,线程.等待,或者你给点延时
3,这个引起的原因可能性有很多,主要是代码引起的
作者:
cylhb
时间:
2012-2-18 19:38
哦哦,原来如此。。。
新手啊-。-
不用插件的话许多功能TC自带的貌似还有点麻烦,差距。。
还有一点就是据说TC没有数组。。。那个什么队列的,看起来好麻烦的样子。。。
作者:
清风流水2060
时间:
2012-2-19 00:41
新版有数组了,看帮助文档
作者:
cylhb
时间:
2012-2-19 15:48
哦。我还真没看。。。。看看去,就不用弄那么多列表框了。
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1