TC官方合作论坛

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

[已解决] 来高手指点下 多线程控制多个记事本窗口

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

马上加入TC

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

x
看了官方的教程 感觉教程说的好麻烦,好像要开多线程来控制记事本就必须通过枚举然后在分割,然后在循环~~~~~看的有的晕
来个高手指点下怎么去简化
例如:我打开2个记事本.如何用多线程去同时移动着2个记事本的窗口?最好来点思路和代码.好的话给采纳哈
回复

使用道具 举报

10#
发表于 2012-8-18 16:56:17 | 只看该作者
为了你 我都回错贴了 不采纳就不应该了

好人做到底吧 给你写了个代码  自己研究去吧
可能写的比较麻烦 tc好像没有获取指定子窗口句柄的函数

首先在界面上添加两个按钮  一个名称是 开始   另一个是停止
不要忘了添加这两个按钮的点击事件  还有一个界面销毁的事件
  1. 空间 示例

  2. 整型 线程句柄1,线程句柄2    //定义两个全局变量

  3. 功能 逻辑型 线程1(字符型 句柄)            
  4.     整型 hwnd=转换.字符型转整型(句柄,0)
  5.     整型 i
  6.     重复(1000)
  7.     窗口.发送字符串(hwnd,转换.整型转字符型(i)+"\r")  
  8.     i=i+1
  9.     辅助.等待(5)
  10.     重复结束
  11. 返回 真
  12. 功能结束


  13. 功能 逻辑型 线程2(字符型 句柄)
  14.     整型 hwnd=转换.字符型转整型(句柄,0)
  15.     整型 i=999
  16.     重复(1000)
  17.     窗口.发送字符串(hwnd,转换.整型转字符型(i)+"\r")  
  18.     i=i-1
  19.     辅助.等待(5)
  20.     重复结束   
  21. 返回 真
  22. 功能结束

  23. 功能 逻辑型 开始_点击()    // 开始按钮的点击事件

  24. 字符型 句柄组=系统.枚举("Notepad",1)      //获取记事本的句柄组
  25. 如果(句柄组=="")
  26.     辅助.消息框("未获取到窗口句柄")
  27.     返回 假
  28. 如果结束
  29. 字符型[] 句柄数组
  30. 字符串.分割(句柄组,"|",句柄数组)   //分割句柄
  31. 整型 数组下标
  32. 数组.大小(句柄数组,数组下标)
  33. 如果(数组下标<=0)
  34.     辅助.消息框("分割句柄组失败")
  35.     返回 假
  36. 如果结束

  37. 字符型 子窗口句柄组1=系统.枚举(句柄数组[0],3)     //获取其中一个记事本的子窗口句柄组
  38. 如果(子窗口句柄组1=="")
  39.     辅助.消息框("未获取到子窗口句柄")
  40.     返回 假
  41. 如果结束
  42. 字符型[] 子句柄数组1
  43. 字符串.分割(子窗口句柄组1,"|",子句柄数组1)   //分给获取到的子窗口句柄组
  44. 数组.大小(子句柄数组1,数组下标)
  45. 如果(数组下标<=0)
  46.     辅助.消息框("分割句柄组失败")
  47.     返回 假
  48. 如果结束
  49. 字符型 类名=窗口.类名(转换.字符型转整型(子句柄数组1[0],0))     //获取其中一个子窗口句柄的类名
  50. 字符型 子句柄1  
  51. 如果(类名=="Edit")      //判断是否是类名为"Edit"的句柄    并且把句柄赋值给子句柄1   因为记事本只有两个子窗口 所以不是子句柄数组1[0] 就是子句柄数组1[1]      
  52.     子句柄1=子句柄数组1[0]      
  53. 否则
  54.     子句柄1=子句柄数组1[1]
  55. 如果结束

  56. 字符型 子窗口句柄组2=系统.枚举(句柄数组[1],3)//获取另一个记事本的子窗口句柄组  以下同上
  57. 如果(子窗口句柄组2=="")
  58.     辅助.消息框("未获取到子窗口句柄")
  59.     返回 假
  60. 如果结束
  61. 字符型[] 子句柄数组2
  62. 字符串.分割(子窗口句柄组2,"|",子句柄数组2)
  63. 数组.大小(子句柄数组2,数组下标)
  64. 如果(数组下标<=0)
  65.     辅助.消息框("分割句柄组失败")
  66.     返回 假
  67. 如果结束
  68. 类名=窗口.类名(转换.字符型转整型(子句柄数组2[0],0))
  69. 字符型 子句柄2
  70. 如果(类名=="Edit")
  71.     子句柄2=子句柄数组2[0]
  72. 否则
  73.     子句柄2=子句柄数组2[1]
  74. 如果结束

  75. 线程句柄1=线程.开启("示例.线程1",子句柄1)    //开启线程1
  76. 线程句柄2=线程.开启("示例.线程2",子句柄2)    //开启线程2

  77. 返回 真
  78. 功能结束

  79. 功能 逻辑型 停止_点击()   //按钮停止点击事件

  80. 线程.关闭(线程句柄1)    //关闭线程1
  81. 线程.关闭(线程句柄2)    //关闭线程2

  82. 返回 真
  83. 功能结束


  84. 功能 逻辑型 销毁()   //窗口销毁的事件

  85. 线程.关闭(线程句柄1)   //关闭线程1
  86. 线程.关闭(线程句柄2)    //关闭线程2

  87. 返回 真
  88. 功能结束

  89. 空间结束
  90. //看我这么辛苦的帮你  不管你懂不懂 采纳是必须了的吧
复制代码

回复 支持 反对

使用道具 举报

沙发
发表于 2012-8-17 16:04:46 | 只看该作者
好像枚举是还算省事的吧  用大漠的插件省点事
你开个记事本就先要获得四个句柄 要是枚举的话返回值是一个数组要把数组隔开split函数分一下
回复 支持 反对

使用道具 举报

板凳
发表于 2012-8-17 16:09:03 | 只看该作者
你没明白那些代码的本质是要干什么。

就是为了获取到真正能够操作窗口的窗口句柄!!  这点是很重要的,不然你得到错误的窗口句柄,那么你是操作不了窗口的!

至于代码嘛。 自己仿写视频的吧!!!!
回复 支持 反对

使用道具 举报

地板
发表于 2012-8-17 16:24:53 | 只看该作者
提个思路,是不是可以遍历窗口后,修改窗口标题为不同的标题,就可以用窗口命令操作了。
回复 支持 反对

使用道具 举报

5#
发表于 2012-8-17 16:29:14 | 只看该作者
思路很简单的
一 获取句柄  获取到的是一个句柄组 所以要把句柄一个个分割出来
二 得到句柄后么 就开启线程 每个线程里操作一个句柄(窗口)
就是这么简单的亲
回复 支持 反对

使用道具 举报

6#
发表于 2012-8-17 19:28:18 | 只看该作者
我只是要灌水。
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2012-8-17 23:32:31 | 只看该作者
回复 5楼jimye0526的帖子

那样的话会不会照成争夺资源的情况?
回复 支持 反对

使用道具 举报

8#
发表于 2012-8-18 09:21:26 | 只看该作者
回复 7楼f45601535的帖子

不会 这是针对窗口来的   又不是控制同一个窗口
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2012-8-18 11:49:43 | 只看该作者
回复 8楼jimye0526的帖子

如果是那样的话,还用不用设置临界区?今天鼓捣了半天哎,还是只能控制一个窗口~~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

关闭

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

GMT+8, 2025-10-12 21:39 , Processed in 0.162478 second(s), 24 queries .

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

© 2001-2013 Comsenz Inc.

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