首先把dm变量定义成数组,线程句柄,线程ID都定义成数组。
然后通过进程_取ID数组 (“gamefree.exe”, process_id, )获取所有游戏窗口的句柄ID加入数组process_id,然后通过取数组成员数,确定开了几个游戏窗口,对相关数组重新定义下标。通过进程ID取创建句柄,分别获取相应窗口句柄,进行后台绑定。
易语言源码:
.版本 2
.支持库 spec
.程序集 窗口程序集_启动窗口
.程序集变量 dm, E大漠, , "0", 大漠插件
.程序集变量 thread_ID, 整数型, , "0", 线程ID
.程序集变量 thread_hwnd, 整数型, , "0", 线程句柄
.程序集变量 许可证, 线程许可证
.子程序 __启动窗口_创建完毕
重定义数组 (dm, 假, 1)
dm [1].初始化注册云 (取运行目录 () + “\dm.dll”)
调试输出 (dm [1].Ver ())
.子程序 _按钮_thread_被单击
.局部变量 process_id, 整数型, , "0"
.局部变量 array_total, 整数型
.局部变量 i, 整数型
.局部变量 hwnd, 整数型
进程_取ID数组 (“gamefree.exe”, process_id, )
array_total = 取数组成员数 (process_id)
重定义数组 (dm, 假, array_total)
重定义数组 (thread_hwnd, 假, array_total)
重定义数组 (thread_ID, 假, array_total)
.计次循环首 (array_total, i)
dm [i].初始化 ()
hwnd = 进程_ID取窗口句柄 (process_id [i], , , )
dm [i].BindWindow (hwnd, “dx”, “dx2”, “windows”, 0)
延迟 (500)
thread_hwnd [i] = 线程_启动 (&子程序_主线程, i, thread_ID [i])
延迟 (500)
.计次循环尾 ()
.子程序 子程序_主线程
.参数 thread, 整数型
许可证 = 线程_创建许可证 ()
线程_进入许可区 (许可证)
线程_初始化COM库 ()
子_打怪 (thread)
子_签到 (thread)
dm [thread].UnBindWindow ()
dm [thread].销毁 ()
线程_取消COM库 ()
线程_退出许可区 (许可证)
线程_删除许可证 (许可证)
.子程序 子_打怪, , , 也就是打怪执行任务的子程序
.参数 thread
.局部变量 i, 整数型
.计次循环首 (100, i)
dm [thread].KeyPress (115)
延迟 (1000)
.计次循环尾 ()
.子程序 子_签到
.参数 thread
源码参考:第四课易语言大漠多线程绑定和打怪(方法二)
511遇见易语言大漠多线程