马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
参考论坛里的例子改写为tc5.4,原为tc版本的.初学TC,可以运行.初学TC,或有错误,请高手指正.
- 变量 dm ,窗口句柄数组=数组(),dm数组=数组(),任务线程句柄=数组(),检测线程句柄=数组()
- 变量 窗口标题=数组(),是否重定义=真
- 变量 index=0
- 变量 dmpath,dllcallret
- 功能 TC_DM54多开_初始化()
- //这里添加你要执行的代码
- //免注册调用大漠
- 命令("regsvr32 dm.dll /u /s",false)
- // dmpath = help.getrcpath("rc:dm.dll")
- // dllcallret=dllcall(help.getrcpath("rc:DmReg.dll"),"int","SetDllPathA","char *",dmpath,"int",0)
- // dm=com("dm.dmsoft")
-
-
- dmpath = 获取资源路径("rc:dm.dll")
- dllcallret=dllcall(获取资源路径("rc:DmReg.dll"),"int","SetDllPathA","char *",dmpath,"int",0)
- dm=com("dm.dmsoft")
- 结束
- //-------------------------------获取窗口句柄------------------------//
- 功能 my获取窗口句柄()
- 变量 子句柄,大小
- 变量 句柄,数组下标
- 句柄=dm.GetForegroundWindow() //获取置于前端的窗口句柄
- //句柄=系统.枚举(句柄,3)
- 句柄=枚举窗口(句柄,3)
- 调试输出(句柄)
- //字符串.分割(句柄,"|",子句柄)
- 字符串分割(句柄,"|",子句柄)
- //数组空间.大小(子句柄,大小)
- 大小=数组大小(子句柄)
-
- 如果(大小>0)
- 调试输出(子句柄[0])
- // 如果(类型.转整型(子句柄[0])>0)
- 如果(转整型(子句柄[0])>0)
- // 句柄=类型.转整型(子句柄[0])
- 句柄=转整型(子句柄[0])
- 调试输出(句柄)
-
- // 如果(是否重定义)
- // //对数组进行重定义,个数是index
- // 窗口句柄数组=数组空间.重定义(窗口句柄数组,真,index+1)
- // dm数组=数组空间.重定义(dm数组,真,index+1)
- // 任务线程句柄= 数组空间.重定义(任务线程句柄,真,index+1)
- // 检测线程句柄= 数组空间.重定义(检测线程句柄,真,index+1)
- // 窗口标题=数组空间.重定义(窗口标题,真,index+1)
- // 结束
-
- //x引入错误判断机制,判断当前获得的窗口句柄是否已经绑定了
- //数组下标=数组空间.查找(窗口句柄数组,句柄)
- 数组下标=数组值查找(窗口句柄数组,句柄,1)//返回元素在数组中的位置;0为返回key
- 如果(数组下标==-1)
- //说明没有绑定过
- //窗口句柄数组[index]=句柄
- 数组追加元素(窗口句柄数组,句柄)//第3个参数为key,不传或为空,则把当前索引作为键值加入,
- //默认为空,操作索引数组,写入key则操作关联数组;成功返回真,失败返回假
- 返回 句柄
- 否则
- 调试输出("[请不要重复运行脚本]")
- 返回 -1
- 结束
- 否则
- 返回 -1
- 结束
- 结束
- 结束
- //-----------------------------主窗口绑定-----------------------//
- 功能 主窗口绑定(句柄)
- 变量 下标,长度
- 变量 任务线程句柄a,检测线程句柄a,dm_ret,dm_local
- //下标=数组空间.查找(窗口句柄数组,句柄)
- 下标=数组值查找(窗口句柄数组,句柄)
- 调试输出("[主窗口绑定] 句柄"&句柄)
- // dm数组[index]=com("dm.dmsoft")
- //dm_local=com("dm.dmsoft")//出错
- //数组追加元素(dm数组,dm_local,句柄)//数组追加元素(数组,值,下标="") //出错
- 数组追加元素(dm数组,插件("dm.dmsoft"),句柄)//数组追加元素(数组,值,下标="")
- //向数组尾部添加一个值,如果key值存在就会返回假失败,不传key或者key为空,则把当前索引作为键值加入
-
- //dm数组[index].SetPath(辅助.获取资源路径("rc:"))
- dm数组[句柄].SetPath(获取资源路径("rc:"))
- //dm数组[index].SetDict(0,"字库.txt")
- //dm_ret=dm数组[index].BindWindow(句柄,"gdi","windows","windows",0)
- dm_ret=dm数组[句柄].BindWindow(句柄,"gdi","windows","windows",0)
- 如果(dm_ret>0)
- 调试输出("主窗口绑定成功")
- // 任务线程句柄[index]= 线程.开启("TC_DM54多开.任务线程",下标)
- // 检测线程句柄[index]= 线程.开启("TC_DM54多开.检测线程",下标)
- 任务线程句柄a= 线程开启("任务线程",句柄)
- 检测线程句柄a= 线程开启("检测线程",句柄)
-
- 数组追加元素(任务线程句柄,任务线程句柄a,句柄)//数组追加元素(数组,值,下标="")
- 数组追加元素(检测线程句柄,检测线程句柄a,句柄)//数组追加元素(数组,值,下标="")
-
-
- // index++
- // 数组空间.大小(窗口句柄数组,长度)
- // 如果(长度!=index)
- // index=长度
- // 结束
- // 是否重定义=真
- 否则
- 调试输出("主窗口绑定失败")
- 退出()
- 结束
- 结束
- //---------------------------------------任务线程---------------------------------------------------//
- //功能 任务线程(下标)
- 功能 任务线程(句柄)
- 调试输出("任务线程" & 句柄)
- 循环(真)
- //dm数组[下标].SendString2(窗口句柄数组[下标],"任务线程 第"&类型.转字符型(下标+1)&"个窗口 "&辅助.随机数(1,100)&"\r\n")
- dm数组[句柄].SendString2(句柄,"任务线程 第"&转字符型(数组键查找(任务线程句柄,句柄)+1)&"个窗口 "&随机数(1,100)&"\r\n")
- //dm数组[句柄].SendString2(句柄,"任务线程 第"&转字符型(数组键查找(任务线程句柄,句柄)+1)&"个窗口 "&随机数(1,100)&"\r\n")
- 等待(500)
- 结束
- 结束
- //----------------------------------------检测线程-------------------------------------------------//
- 功能 检测线程(句柄)
- 循环(真)
- //dm数组[下标].SendString2(窗口句柄数组[下标],"检测线程 第"&类型.转字符型(下标+1)&"个窗口 "&辅助.随机数(1,100)&"\r\n")
- dm数组[句柄].SendString2(句柄,"检测线程 第"&转字符型(数组键查找(检测线程句柄,句柄)+1)&"个窗口 "&随机数(1,100)&"\r\n")
- 等待(800)
- 结束
- 结束
- //-----------------------------------开启热键------------------------------------//
- 功能 热键_开启_热键()
- //这里添加你要执行的代码
- 变量 hwnd
- //hwnd=TC_DM54多开.获取窗口句柄()
- hwnd = my获取窗口句柄()
- 如果(hwnd>0)
- //TC_DM54多开.主窗口绑定(hwnd)
- 主窗口绑定(hwnd)
- 结束
- 结束
- 功能 删除数组指定内容(&数组名,下标)
- 数组名[下标]=""
- 结束
- //----------------------------------------单停热键---------------------------------//
- 功能 热键_单停_热键()
- //这里添加你要执行的代码
- //先获取置于前端的窗口句柄
- 变量 子句柄,大小
- 变量 句柄
- 句柄 = dm.GetForegroundWindow() //获取置于前端的窗口句柄
- //句柄=系统.枚举(句柄,3)
- 句柄=枚举窗口(句柄,3)
- 调试输出(句柄)
- //字符串.分割(句柄,"|",子句柄)
- 字符串分割(句柄,"|",子句柄)
- //数组空间.大小(子句柄,大小)
- 大小=数组大小(子句柄)
- 如果(大小>0)
- //TC_DM54多开.单停(子句柄[0]) //调用下面的单停
- 单停(子句柄[0]) //调用下面的单停
- 结束
- 结束
- //--------------------------------------------单停---------------------------------//
- 功能 单停(句柄)
- 变量 下标
- //下标=数组空间.查找(窗口句柄数组,句柄)
- 下标=数组值查找(窗口句柄数组,句柄,1)
-
- 如果(下标!=-1)
- //先关闭线程
- // 线程.关闭(任务线程句柄[下标])
- // 线程.关闭(检测线程句柄[下标])
- 线程关闭(任务线程句柄[句柄])
- 线程关闭(检测线程句柄[句柄])
-
- //恢复原来的窗口标题
- // dm数组[下标].SetWindowText(窗口标题[下标])
- //dm数组[句柄].SetWindowText(窗口标题[句柄])
- //解绑主窗口
- // dm数组[下标].UnBindWindow()
- dm数组[句柄].UnBindWindow()
-
- //删除数组中的数据
- // TC_DM54多开.删除数组指定内容(窗口句柄数组,下标)
- // TC_DM54多开.删除数组指定内容(dm数组,下标)
- // TC_DM54多开.删除数组指定内容(任务线程句柄,下标)
- // TC_DM54多开.删除数组指定内容(检测线程句柄,下标)
-
- 数组指定位置删除(窗口句柄数组,下标)
- 数组指定键值删除(dm数组,句柄)
- 数组指定键值删除(任务线程句柄,句柄)
- 数组指定键值删除(检测线程句柄,句柄)
-
- // index=下标
- // 是否重定义=假
- 否则
- 调试输出("脚本未运行或游戏窗口未置于前端")
- 结束
- 结束
- //---------------------------------停止热键-----------------------------//
- 功能 热键_停止_热键()
- //这里添加你要执行的代码
- 变量 大小,i
- //获取窗口句柄数组大小
- //数组空间.大小(窗口句柄数组,大小)
- 大小=数组大小(窗口句柄数组)
- 如果(大小>0)
- 遍历(i=0;i<大小;i++)
- // 如果(类型.转整型(窗口句柄数组[i])>0)
- // 线程.关闭(任务线程句柄[i])
- // 线程.关闭(检测线程句柄[i])
- // dm数组[i].UnBindWindow()
- // 结束
- 如果(转整型(窗口句柄数组[i])>0)
- 线程关闭(任务线程句柄[窗口句柄数组[i]])
- 线程关闭(检测线程句柄[窗口句柄数组[i]])
- dm数组[窗口句柄数组[i]].UnBindWindow()
- 结束
-
- 结束
-
-
- //清空所有的数组
- // 数组空间.清空(窗口句柄数组)
- // 数组空间.清空(任务线程句柄)
- // 数组空间.清空(检测线程句柄)
- // 数组空间.清空(dm数组)
-
- 数组清空(窗口句柄数组)
- 数组清空(任务线程句柄)
- 数组清空(检测线程句柄)
- 数组清空(dm数组)
-
-
- // index=0
- 结束
- 结束
复制代码
|