# 易语言大漠插件多窗口多线程单控脚本实现 下面是一个完整的易语言脚本示例,使用大漠插件实现多窗口多线程单控功能: ```e .版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 大漠, 对象 .程序集变量 线程句柄数组, 整数型, , "0" .程序集变量 线程ID数组, 整数型, , "0" .程序集变量 绑定句柄数组, 整数型, , "0" .程序集变量 线程运行标志, 逻辑型, , "0" .子程序 __启动窗口_创建完毕 大漠.创建 ("dm.dmsoft", ) 如果 (大漠.是否为空 () = 真) 信息框 ("大漠插件注册失败,请先注册大漠插件!", 0, , ) 结束 () 结束如果 大漠.SetPath (取运行目录 ()) 大漠.SetDict (0, "字库.txt") .子程序 _按钮_获取信息_被单击 变量 窗口句柄, 整数型 变量 窗口, 文本型 变量 进程ID, 整数型 变量 线程ID, 整数型 变量 索引, 整数型 列表框1.清空 () 清除数组 (线程句柄数组) 清除数组 (线程ID数组) 清除数组 (绑定句柄数组) 清除数组 (线程运行标志) 窗口句柄 = 大漠.EnumWindow (0, "", "", 1 + 2 + 4 + 8) .判断循环首 (窗口句柄 ≠ 0) 窗口 = 大漠.GetWindowTitle (窗口句柄) 进程ID = 大漠.GetWindowProcessId (窗口句柄) 线程ID = 大漠.GetWindowThreadProcessId (窗口句柄, 进程ID) 索引 = 列表框1.加入项目 (到文本 (窗口句柄) + " | " + 窗口 + " | " + 到文本 (线程ID)) 加入成员 (线程句柄数组, 窗口句柄) 加入成员 (线程ID数组, 线程ID) 加入成员 (绑定句柄数组, 0) 加入成员 (线程运行标志, 假) 窗口句柄 = 大漠.EnumWindow (窗口句柄, "", "", 1 + 2 + 4 + 8) .判断循环尾 () .子程序 _按钮_启动任务_被单击 变量 选中索引, 整数型 变量 线程句柄, 整数型 变量 线程ID, 整数型 选中索引 = 列表框1.现行选中项 () 如果 (选中索引 = -1) 信息框 ("请先在列表框中选择一个窗口!", 0, , ) 返回 () 结束如果 如果 (线程运行标志 [选中索引 + 1] = 真) 信息框 ("该窗口任务已在运行中!", 0, , ) 返回 () 结束如果 线程句柄 = 线程句柄数组 [选中索引 + 1] 线程ID = 线程ID数组 [选中索引 + 1] ' 绑定窗口 绑定句柄数组 [选中索引 + 1] = 大漠.BindWindow (线程句柄, "dx2", "windows3", "windows", 0) 如果 (绑定句柄数组 [选中索引 + 1] = 0) 信息框 ("窗口绑定失败!", 0, , ) 返回 () 结束如果 ' 创建线程执行任务 线程运行标志 [选中索引 + 1] = 真 启动线程 (&执行任务, 选中索引, ) .子程序 执行任务 参数 索引, 整数型 变量 线程句柄, 整数型 线程句柄 = 线程句柄数组 [索引 + 1] ' 这里写具体的后台操作代码 .判断循环首 (线程运行标志 [索引 + 1] = 真) ' 示例:模拟按键操作 大漠.KeyPress (49) ' 按下1键 延时 (500) 大漠.KeyPress (50) ' 按下2键 延时 (500) 大漠.KeyPress (51) ' 按下3键 延时 (500) .判断循环尾 () ' 任务结束,解绑窗口 大漠.UnBindWindow () .子程序 _按钮_停止任务_被单击 变量 选中索引, 整数型 选中索引 = 列表框1.现行选中项 () 如果 (选中索引 = -1) 信息框 ("请先在列表框中选择一个窗口!", 0, , ) 返回 () 结束如果 如果 (线程运行标志 [选中索引 + 1] = 假) 信息框 ("该窗口任务未在运行中!", 0, , ) 返回 () 结束如果 线程运行标志 [选中索引 + 1] = 假 .子程序 _按钮_全部停止_被单击 变量 i, 整数型 .计次循环首 (取数组成员数 (线程运行标志), i) 线程运行标志 [i] = 假 .计次循环尾 () 信息框 ("已停止所有任务", 0, , ) .子程序 __启动窗口_将被销毁 ' 程序退出前停止所有线程 _按钮_全部停止_被单击 () ``` ## 代码说明 1. 初始化部分: - 创建大漠插件对象并检查是否注册成功 - 设置大漠插件的工作路径和字库 2. 获取信息功能: - 使用`EnumWindow`遍历所有窗口 - 获取窗口句柄、和线程ID并显示在列表框中 - 将相关信息存储在数组中以便后续操作 3. 启动任务功能: - 绑定选中的窗口(使用DX2后台模式) - 创建新线程执行后台操作 - 在示例中模拟了按键1、2、3的操作 4. 停止任务功能: - 通过修改标志位停止指定线程 - 线程检测到标志位变化后会自动结束并解绑窗口 5. 全部停止功能: - 修改所有线程的标志位使其停止 ## 注意事项 1. 大漠插件注册:使用前需先注册大漠插件到系统,否则无法创建对象。 2. 绑定模式:示例中使用的是DX2后台模式,根据游戏类型可能需要调整绑定参数。 3. 线程安全:多线程操作时要注意共享资源的访问控制,避免冲突。 4. 错误处理:实际应用中应增加更多错误处理代码,确保程序稳定性。 5. 性能优化:频繁的窗口操作可能影响性能,可以考虑添加适当的延时。 6. 资源释放:程序退出前确保释放所有绑定和线程资源。 [2025-08-01 07:14:07 | AI写代码神器 | 1541点数解答]