TC官方合作论坛

标题: 大漠多线程绑定多窗口同时操作 [打印本页]

作者: ViewTran    时间: 2018-8-19 02:34
标题: 大漠多线程绑定多窗口同时操作
本帖最后由 ViewTran 于 2018-8-19 17:14 编辑

大漠多线程绑定多窗口同时操作,绝对的新手福利!很多新手不懂多窗口同时操作,这里就给大家讲一下
先说下思路吧!
假如我们有2个窗口,先枚举出2个窗口句柄
然后分割字符串并得到窗口的数量(2)
然后创建主线程,把窗口数量传参,这里窗口数量值(2)
还要把数量存入dm数组,方便后面创建多个大漠对象。不然无法同时操作多个窗口。这里很重要。
  1. 字符串 = 枚举窗口("Notepad", 1)
  2.     窗口数量 = 字符串分割(字符串, "|", 窗口句柄数组)
  3.     如果(窗口数量 > 0)
  4.         主线程ID = 线程开启("主线程", 窗口数量)
  5.         数组增加元素(dm, 窗口数量, null)
  6.     否则
  7.         消息框("获取窗口失败!", "提示")
  8.         结束
复制代码

然后在主线程里面遍历并创建了2个子线程,每一个子线程操作一个窗口,所以我们要把线程句柄存入到线程句柄数组,方便后面单独操作窗口。
  1. 功能 主线程(数量)
  2.     遍历(变量 i = 0; i < 数量; i++)
  3.         线程句柄数组[i] = 线程开启("子线程", i)
  4.         变量 线程句柄 = 线程句柄数组[i]
  5.         数组增加元素(线程句柄数组, 线程句柄, i)
  6.     结束
  7. 结束
复制代码


然后就是子线程,里面包含了绑定窗口和操作功能。这里的下标是主线程遍历出的值,第一个子线程的值是0,第二个子线程的值是1。
  1. 功能 子线程(下标)
  2.         绑定窗口(下标)
  3.         操作(下标)
  4. 结束
复制代码
绑定窗口就是创建大漠对象,并绑定相应的窗口句柄。注意代码里的[下标],这里值就是各个数组里面的下标。
  1. 功能 绑定窗口(下标)
  2.         变量 窗口句柄, dm_ret
  3.    
  4.         窗口句柄 = 窗口句柄数组[下标]
  5.         //    调试输出(窗口句柄)
  6.         如果(窗口句柄 > 0)
  7.                 dm[下标] = com("dm.dmsoft")
  8.                 dm_ret = dm[下标].BindWindow(窗口句柄, "gdi", "windows3", "windows", 0)
  9.                     如果(dm_ret == 1)
  10.                             调试输出("绑定窗口成功: " & 窗口句柄)
  11.                     否则
  12.                             调试输出("绑定窗口失败!")
  13.                     结束
  14.         结束
  15. 结束
复制代码


建议新手把每个功能都封装成一个子程序,方便调用也方便调试和维护

切记不要把创建线程放在循环里!
切记不要把创建线程放在循环里!
切记不要把创建线程放在循环里!



[attach]26615[/attach][attach]26616[/attach][attach]26614[/attach]














作者: q1040580918    时间: 2018-8-19 11:47
36+5262
作者: husiyu317    时间: 2018-8-19 15:54
66666666666666666
作者: ws1648    时间: 2018-8-20 00:08
楼主辛苦了,给楼主点赞
作者: ws1648    时间: 2018-8-21 17:10
听说多线程还要加守护线程,楼主大神能告诉我们怎么写吗?




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