TC官方合作论坛
标题:
来高手指点下 多线程控制多个记事本窗口
[打印本页]
作者:
f45601535
时间:
2012-8-17 15:45
标题:
来高手指点下 多线程控制多个记事本窗口
看了官方的教程 感觉教程说的好麻烦,好像要开多线程来控制记事本就必须通过枚举然后在分割,然后在循环~~~~~看的有的晕
来个高手指点下怎么去简化
例如:我打开2个记事本.如何用多线程去同时移动着2个记事本的窗口?最好来点思路和代码.好的话给采纳哈
作者:
guang19890303
时间:
2012-8-17 16:04
好像枚举是还算省事的吧 用大漠的插件省点事
你开个记事本就先要获得四个句柄 要是枚举的话返回值是一个数组要把数组隔开split函数分一下
作者:
Abin
时间:
2012-8-17 16:09
你没明白那些代码的本质是要干什么。
就是为了获取到真正能够操作窗口的窗口句柄!! 这点是很重要的,不然你得到错误的窗口句柄,那么你是操作不了窗口的!
至于代码嘛。 自己仿写视频的吧!!!!
作者:
flyinsk
时间:
2012-8-17 16:24
提个思路,是不是可以遍历窗口后,修改窗口标题为不同的标题,就可以用窗口命令操作了。
作者:
jimye0526
时间:
2012-8-17 16:29
思路很简单的
一 获取句柄 获取到的是一个句柄组 所以要把句柄一个个分割出来
二 得到句柄后么 就开启线程 每个线程里操作一个句柄(窗口)
就是这么简单的亲
作者:
djj4288
时间:
2012-8-17 19:28
我只是要灌水。
作者:
f45601535
时间:
2012-8-17 23:32
回复
5楼
jimye0526
的帖子
那样的话会不会照成争夺资源的情况?
作者:
jimye0526
时间:
2012-8-18 09:21
回复
7楼
f45601535
的帖子
不会 这是针对窗口来的 又不是控制同一个窗口
作者:
f45601535
时间:
2012-8-18 11:49
回复
8楼
jimye0526
的帖子
如果是那样的话,还用不用设置临界区?今天鼓捣了半天哎,还是只能控制一个窗口~~~~
作者:
jimye0526
时间:
2012-8-18 16:56
为了你 我都回错贴了 不采纳就不应该了
好人做到底吧 给你写了个代码 自己研究去吧
可能写的比较麻烦 tc好像没有获取指定子窗口句柄的函数
首先在界面上添加两个按钮 一个名称是 开始 另一个是停止
不要忘了添加这两个按钮的点击事件 还有一个界面销毁的事件
空间 示例
整型 线程句柄1,线程句柄2 //定义两个全局变量
功能 逻辑型 线程1(字符型 句柄)
整型 hwnd=转换.字符型转整型(句柄,0)
整型 i
重复(1000)
窗口.发送字符串(hwnd,转换.整型转字符型(i)+"\r")
i=i+1
辅助.等待(5)
重复结束
返回 真
功能结束
功能 逻辑型 线程2(字符型 句柄)
整型 hwnd=转换.字符型转整型(句柄,0)
整型 i=999
重复(1000)
窗口.发送字符串(hwnd,转换.整型转字符型(i)+"\r")
i=i-1
辅助.等待(5)
重复结束
返回 真
功能结束
功能 逻辑型 开始_点击() // 开始按钮的点击事件
字符型 句柄组=系统.枚举("Notepad",1) //获取记事本的句柄组
如果(句柄组=="")
辅助.消息框("未获取到窗口句柄")
返回 假
如果结束
字符型[] 句柄数组
字符串.分割(句柄组,"|",句柄数组) //分割句柄
整型 数组下标
数组.大小(句柄数组,数组下标)
如果(数组下标<=0)
辅助.消息框("分割句柄组失败")
返回 假
如果结束
字符型 子窗口句柄组1=系统.枚举(句柄数组[0],3) //获取其中一个记事本的子窗口句柄组
如果(子窗口句柄组1=="")
辅助.消息框("未获取到子窗口句柄")
返回 假
如果结束
字符型[] 子句柄数组1
字符串.分割(子窗口句柄组1,"|",子句柄数组1) //分给获取到的子窗口句柄组
数组.大小(子句柄数组1,数组下标)
如果(数组下标<=0)
辅助.消息框("分割句柄组失败")
返回 假
如果结束
字符型 类名=窗口.类名(转换.字符型转整型(子句柄数组1[0],0)) //获取其中一个子窗口句柄的类名
字符型 子句柄1
如果(类名=="Edit") //判断是否是类名为"Edit"的句柄 并且把句柄赋值给子句柄1 因为记事本只有两个子窗口 所以不是子句柄数组1[0] 就是子句柄数组1[1]
子句柄1=子句柄数组1[0]
否则
子句柄1=子句柄数组1[1]
如果结束
字符型 子窗口句柄组2=系统.枚举(句柄数组[1],3)//获取另一个记事本的子窗口句柄组 以下同上
如果(子窗口句柄组2=="")
辅助.消息框("未获取到子窗口句柄")
返回 假
如果结束
字符型[] 子句柄数组2
字符串.分割(子窗口句柄组2,"|",子句柄数组2)
数组.大小(子句柄数组2,数组下标)
如果(数组下标<=0)
辅助.消息框("分割句柄组失败")
返回 假
如果结束
类名=窗口.类名(转换.字符型转整型(子句柄数组2[0],0))
字符型 子句柄2
如果(类名=="Edit")
子句柄2=子句柄数组2[0]
否则
子句柄2=子句柄数组2[1]
如果结束
线程句柄1=线程.开启("示例.线程1",子句柄1) //开启线程1
线程句柄2=线程.开启("示例.线程2",子句柄2) //开启线程2
返回 真
功能结束
功能 逻辑型 停止_点击() //按钮停止点击事件
线程.关闭(线程句柄1) //关闭线程1
线程.关闭(线程句柄2) //关闭线程2
返回 真
功能结束
功能 逻辑型 销毁() //窗口销毁的事件
线程.关闭(线程句柄1) //关闭线程1
线程.关闭(线程句柄2) //关闭线程2
返回 真
功能结束
空间结束
//看我这么辛苦的帮你 不管你懂不懂 采纳是必须了的吧
复制代码
作者:
f45601535
时间:
2012-8-18 21:55
回复
10楼
jimye0526
的帖子
嘿嘿,看您那么辛苦,采纳是必须给的~~~代码好多够我研究一晚上的了
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1