|
马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
TC如何实现多线程操作雷电模拟器
1.编程环境:tc7.0版本
2.模拟器版本雷电4.0
3.大漠插件版本3.1233免费版
4.界面设计如图
5.所需要实现的核心功能为就是:全部启动,单停,单启,全部停止,读写配置.
6.其中全部启动需要考虑到已经启动过或者是没有启动过的情况所以我设计一个线程状态来判定,如果启动过了状态设置位run,那这里就出现一个新问题如果开始已经启动过后面停止了就会产生一个dm对象,所以我每次停止的时候需要把大漠对象给释放掉,同理其他的几个按钮也需要考虑这些情况。
7.附上QQ群:699104596
- 变量 dm,大漠数组=数组(),任务线程句柄=数组(),时间
- //删除任务
- 功能 按钮7_点击()
- 变量 文本
- 文本 =列表框获取选中文本("列表框0")
- 如果(文本!=""&&文本!=null)
- 列表框增加文本("列表框1",文本)
- 列表框删除选项文本("列表框0",列表框获取选项("列表框0"))
-
- 结束
-
- 结束
- //添加任务
- 功能 按钮8_点击()
- 变量 文本
- 文本 =列表框获取选中文本("列表框1")
- 如果(文本!=""&&文本!=null)
- 列表框增加文本("列表框0",文本)
- 列表框删除选项文本("列表框1",列表框获取选项("列表框1"))
-
- 结束
-
- 结束
- //插入表格
- 功能 按钮6_点击()
- 变量 content = 数组("","","","","","","","","","","")
- 表格插入行("表格0",content)
-
-
- 结束
- //删除表格
- 功能 按钮1_点击()
- 变量 行数
- 表格获取大小("表格0",行数,null)
- 调试输出(行数)
- 如果(行数>1)
- 表格删除行("表格0",行数-1)
- 结束
-
-
-
- 结束
- //读取已有配置
- 功能 获取已有任务()
- 变量 内容=数组(),内容_1=数组(),长度
- 字符串分割(文件读取内容("D:\\配置.ini"),"\r\n",内容)
- 遍历(变量 i = 0; i < 数组大小(内容); i++)
- 长度=字符串查找(内容[i],"=")
- 如果( 长度!=-1)
- 内容_1[i]=字符串截取左侧(内容[i],长度)
- 结束
- 结束
- 返回 内容_1
- 结束
- //更新下拉框配置内容
- 功能 设置下拉配置()
- 遍历(变量 i = 0; i < 编辑框获取文本("编辑框2"); i++)
-
- 表格设置类型("表格0",i+1,9,1)
- 表格设置下拉框内容("表格0",i+1,9,获取已有任务())
- 结束
-
- 结束
- //更新模拟器
- 功能 按钮0_点击()
- //这里添加你要执行的代码
- 清空表格内容("表格0")
- 填充模拟器信息到表格("表格0")
- 设置下拉配置()
- 初始化线程状态()
- 结束
- //保存配置
- 功能 按钮9_点击()
-
- 变量 配置名,文本,结果=""
- 变量 职业=下拉框获取选项文本("下拉框1",下拉框获取选项("下拉框1"))
- 变量 地图名=下拉框获取选项文本("下拉框2",下拉框获取选项("下拉框2"))
- 配置名=编辑框获取文本("编辑框1")
- 如果(配置名=="")
- 消息框("配置名为空")
- 返回
- 结束
- 遍历(变量 i = 0; i < 列表框获取选项个数("列表框1"); i++)
- 文本 =列表框获取文本("列表框1",i)
- 结果=结果&文本&","
-
- 结束
- 文件写配置("已选任务",配置名,结果,"D:\\配置.ini")
- 文件写配置("职业",配置名,职业,"D:\\配置.ini")
- 文件写配置("地图名",配置名,地图名,"D:\\配置.ini")
- 消息框("保存成功")
- 设置下拉配置()
- 结束
- //初始化窗口
- 功能 模拟器中控_初始化()
- //注册插件
- 如果(注册插件(获取资源路径("rc:dm.dll"),真))
- dm=com("dm.dmsoft")
-
- 调试输出("注册成功,大漠插件版本:"&dm.ver())
- 结束
-
- 设置下拉配置()
- 初始化线程状态()
- 换皮肤("皮肤_ASUS.she")
-
- 结束
- 功能 换皮肤(名字)
- 变量 path=获取资源路径("rc:")
- dllcall(path & "SkinH_EL.dll","int","SkinH_AttachEx","char *",path & 名字,"char *","")
-
- 结束
- //初始化线程状态
- 功能 初始化线程状态()
- 变量 窗口数量=编辑框获取文本("编辑框2")
- 遍历(变量 i = 0; i < 窗口数量; i++)
- 表格设置内容("表格0",i+1,10,"stop")
-
-
- 结束
- 结束
- //全部启动功能
- 功能 按钮2_点击()
- 变量 数量,线程状态,绑定窗口句柄,返回值
- //1.获取需要启动的窗口数量
- 数量=编辑框获取文本("编辑框2")
-
- //2..遍历启动窗口
- 遍历(变量 i = 0; i < 数量; i++)
- //3.获取线程状态
- 线程状态=表格获取内容("表格0",i+1,10)
- 如果(线程状态=="stop")
- 绑定窗口句柄=表格获取内容("表格0",i+1,3)
- //4.判断是否启动过这个窗口
- 如果(数组键查找(大漠数组,转字符型(i+1))==-1)
- //5.1如果这个窗口没有启动过
- 大漠数组[转字符型(i+1)]=com("dm.dmsoft")
- 返回值=大漠数组[转字符型(i+1)].BindWindow(绑定窗口句柄,"gdi","windows3","windows",0)
- 如果(返回值==1)
- //开启线程
-
- 任务线程句柄[转字符型(i+1)]=线程开启("任务线程",i+1)
- 表格设置内容("表格0",i+1,10,"run")
- 结束
- 否则
- //5.2已经启动过了
- 返回值=大漠数组[转字符型(i+1)].BindWindow(绑定窗口句柄,"gdi","windows3","windows",0)
- 如果(返回值==1)
- //开启线程
-
- 任务线程句柄[转字符型(i+1)]=线程开启("任务线程",i+1)
- 表格设置内容("表格0",i+1,10,"run")
- 结束
- 结束
-
- 结束
- 等待(1000)
-
- 结束
-
-
-
- 结束
- //全部停止功能
- 功能 按钮3_点击()
- 变量 窗口数量=编辑框获取文本("编辑框2")
- //1.获取正在运行中的窗口
- 遍历(变量 i = 0; i < 窗口数量; i++)
- 如果(表格获取内容("表格0",i+1,10)=="run")
- 线程关闭(任务线程句柄[转字符型(i+1)])
- 大漠数组[转字符型(i+1)].UnBindWindow()
- 表格设置内容("表格0",i+1,10,"stop")
- 结束
- 结束
-
- 结束
- //停止选中的模拟器
- 功能 按钮4_点击()
- 变量 行数
- //获取选中的行数
- 表格获取焦点选项("表格0",行数,null)
- 调试输出("选中第:"&行数&"行")
- 如果(表格获取内容("表格0",行数,10)=="run")
- 线程关闭(任务线程句柄[转字符型(行数)])
- 大漠数组[转字符型(行数)].UnBindWindow()
- 表格设置内容("表格0",行数,10,"stop")
- 结束
- 结束
- //启动选中模拟器
- 功能 按钮5_点击()
- 变量 行数,绑定窗口句柄,返回值
- //获取选中的行数
- 表格获取焦点选项("表格0",行数,null)
- 调试输出("选中第:"&行数&"行")
- 如果(表格获取内容("表格0",行数,10)=="stop")
- 绑定窗口句柄=表格获取内容("表格0",行数,3)
- //4.判断是否启动过这个窗口
- 如果(数组键查找(大漠数组,转字符型(行数))==-1)
- //5.1如果这个窗口没有启动过
- 大漠数组[转字符型(行数)]=com("dm.dmsoft")
- 返回值=大漠数组[转字符型(行数)].BindWindow(绑定窗口句柄,"gdi","windows3","windows",0)
- 如果(返回值==1)
- //开启线程
- 任务线程句柄[转字符型(行数)]=线程开启("任务线程",行数)
- 表格设置内容("表格0",行数,10,"run")
- 结束
- 否则
- //5.2已经启动过了
- 返回值=大漠数组[转字符型(行数)].BindWindow(绑定窗口句柄,"gdi","windows3","windows",0)
- 如果(返回值==1)
- //开启线程
- 任务线程句柄[转字符型(行数)]=线程开启("任务线程",行数)
- 表格设置内容("表格0",行数,10,"run")
- 结束
- 结束
-
-
-
-
-
-
-
- 结束
- 结束
- 功能 按钮12_点击()
- 关闭应用(0,"com.yetrznb.whsecr")
-
- 结束
- //打开账号文件
- 功能 按钮11_点击()
-
- cmd("D:\\账号信息.ini",真)
- 结束
- //打开配置文件
- 功能 按钮13_点击()
- //这里添加你要执行的代码
- cmd("D:\\配置.ini",真)
- 结束
复制代码
|
-
界面
|