TC官方合作论坛

 找回密码
 立即注册
查看: 1620|回复: 5

[问题] 多开窗口绑定

[复制链接]
发表于 2014-2-20 23:03:42 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
空间 多开1
变量 ts
变量 顶层窗口句柄数组 = 数组[], 窗口句柄数组 = 数组[], 窗口标题数组 = 数组[]
变量 任务线程句柄 = 数组[], 检测线程句柄 = 数组[]
变量 Index = 0, ts_R = 数组[]
变量 是否重定义 = 真
//------------------------------ 任务线程 ------------------------------//
功能 任务线程(下标)
    变量 ret,intX,intY
    调试输出("[任务线程] 下标: " & 下标)
    //创建天使对象
    //ts_R[下标] = com("ts.tssoft")
    ts_R[下标] = com("dm.dmsoft")
    //设置全局路径
    ts_R[下标].SetPath(辅助.获取资源路径("rc:"))
    //设置字体
    //ts[下标].SetDict(0, "1.txt")
    ret = ts_R[下标].BindWindow(窗口句柄数组[下标], "dx", "dx", "dx", 0)//"dx", "dx", "dx", 1)
    如果(ret==1)
        调试输出("[任务线程] 任务线程绑定成功")
        公共库.表格数据("表格0", 下标 + 1, 3, "绑定成功")
        //绑定成功后设置标题
        窗口.设置标题(顶层窗口句柄数组[下标], 窗口标题数组[下标]& " - 窗口" & (下标+1))
        调试输出("[任务线程] 设置标题成功")
        
        //---------这里就是任务区域功能填写了-------------------------------------------------------------
        
        多开1.发送内容(下标)
        
        //--------------------------------------------------------------------------------------------------
        
    否则
        调试输出("[任务线程] 任务线程绑定失败")
        公共库.表格数据("表格0", 下标 + 1, 3, "绑定失败")
    如果结束
功能结束
//------------------------------发送内容------------------------------//
功能 发送内容(下标)
    调试输出("[发送内容] 下标: " & 下标 & " 窗口句柄数组[下标]:" & 窗口句柄数组[下标])
    循环(真)
        字符 = 辅助.随机数(0, 500)
        ts_R[下标].SendString(窗口句柄数组[下标], 字符 & " ")
        辅助.等待(1000)
    循环结束
功能结束
//------------------------------单开------------------------------//
功能 单开(热键)
    调试输出("---------------------------------------------------------------")
    变量 数组下标, 长度, 顶层句柄
    窗口句柄 = 窗口.鼠标所在窗口句柄()
    如果(窗口句柄 > 0)
        数组下标 = 数组空间.查找(窗口句柄数组, 窗口句柄)
        如果(数组下标 == -1)
            如果(热键 == 0)
                如果(是否重定义)
                    顶层窗口句柄数组 = 数组空间.重定义(顶层窗口句柄数组, 真, Index + 1)
                    窗口句柄数组 = 数组空间.重定义(窗口句柄数组, 真, Index + 1)
                    窗口标题数组 = 数组空间.重定义(窗口标题数组, 真, Index + 1)
                    任务线程句柄 = 数组空间.重定义(任务线程句柄, 真, Index + 1)
                    检测线程句柄 = 数组空间.重定义(检测线程句柄, 真, Index + 1)
                    ts_R = 数组空间.重定义(ts_R, 真, Index + 1)
                如果结束
                调试输出("[单开] 线程开启 窗口句柄: " & 窗口句柄 & " Index:" & Index)
                顶层句柄 = 窗口.得到父窗口(窗口句柄)
                顶层窗口句柄数组[Index] = 顶层句柄
                窗口句柄数组[Index] = 窗口句柄
                窗口标题数组[Index] = 窗口.得到标题(顶层句柄)
                任务线程句柄[Index] = 线程.开启("多开1.任务线程", Index)
                检测线程句柄[Index] = 1
                公共库.表格数据("表格0", Index + 1, 0, Index+1)
                公共库.表格数据("表格0", Index + 1, 1, 窗口句柄)
                公共库.表格数据("表格0", Index + 1, 2, 顶层句柄)
                公共库.表格数据("表格0", Index + 1, 4, "运行中")
                公共库.表格数据("表格0", Index + 1, 5, 任务线程句柄[Index])
                公共库.表格数据("表格0", Index + 1, 6, Index)
                Index = Index + 1
                //错误误判机制
                数组空间.大小(窗口句柄数组, 长度)
                如果(Index != 长度)
                    Index = 长度
                如果结束
                是否重定义 = 真
            如果结束
        否则
            如果(热键 == 1)
                公共库.表格数据("表格0", 数组下标 + 1, 3,"解绑成功")
                公共库.表格数据("表格0", 数组下标 + 1, 4, "关闭")
                //线程解绑
                ts_R[数组下标].UnBindWindow()
                //关闭子线程
                线程.关闭(任务线程句柄[数组下标])
                //恢复窗口标题
                ts_R[数组下标].SetWindowText(顶层窗口句柄数组[数组下标], 窗口标题数组[数组下标])
                顶层窗口句柄数组[数组下标] = null
                窗口句柄数组[数组下标] = null
                窗口标题数组[数组下标] = null
                任务线程句柄[数组下标] = null
                检测线程句柄[数组下标] = null
                //ts_R[数组下标] = null
                Index = 数组下标 //0
                是否重定义 = 假
                调试输出("[单开] 线程关闭 窗口句柄: " & 窗口句柄 & " 窗口句柄数组:" & 窗口句柄数组[数组下标] & " 数组下标:" & 数组下标 & " Index:" & Index)
                返回 真
            如果结束
            如果(检测线程句柄[数组下标]==1)
                线程.暂停(任务线程句柄[数组下标])
                检测线程句柄[数组下标] = 0
                公共库.表格数据("表格0", 数组下标 + 1, 4, "暂停")
                ts_R[数组下标].SetWindowText(顶层窗口句柄数组[数组下标], 窗口标题数组[数组下标] & " - 窗口" & (数组下标+1) & " 暂停")
                调试输出("[单开] 线程暂停 窗口句柄: " & 窗口句柄 & " 任务线程句柄: " & 任务线程句柄[数组下标] & " 数组下标:" & 数组下标)
            否则
                线程.恢复(任务线程句柄[数组下标])
                检测线程句柄[数组下标] = 1
                公共库.表格数据("表格0", 数组下标 + 1, 4, "已恢复")
                ts_R[数组下标].SetWindowText(顶层窗口句柄数组[数组下标], 窗口标题数组[数组下标] & " - 窗口" & (数组下标+1) & " 已恢复运行中")
                调试输出("[单开] 线程恢复 窗口句柄: " & 窗口句柄 & " 任务线程句柄: " & 任务线程句柄[数组下标] & " 数组下标:" & 数组下标)
            如果结束
        如果结束
    如果结束
功能结束
//------------------------------停止------------------------------//
功能 停止()
    变量 长度, i
    数组空间.大小(窗口句柄数组, 长度)
    调试输出("[热键_停止_热键] 长度: " & 长度)
    遍历(i = 0; i < 长度; i++)
        如果(任务线程句柄[i] > 0)
            调试输出("[单开] 线程全部停止  窗口句柄数组:" & i & " : " & 窗口句柄数组[i])
            公共库.表格数据("表格0", i + 1, 3,"解绑成功")
            公共库.表格数据("表格0", i + 1, 4, "关闭")
            //线程解绑
            ts_R[i].UnBindWindow()
            //关闭子线程
            线程.关闭(任务线程句柄[i])
            //恢复窗口标题
            ts_R[i].SetWindowText(顶层窗口句柄数组[i], 窗口标题数组[i])
        如果结束
    遍历结束
    //将数据从数组中删除
    数组空间.清空(顶层窗口句柄数组)
    数组空间.清空(窗口句柄数组)
    数组空间.清空(窗口标题数组)
    数组空间.清空(任务线程句柄)
    数组空间.清空(检测线程句柄)
    数组空间.清空(ts_R)
    Index = 0
    是否重定义 = 真
功能结束
//------------------------------热键_启动_热键------------------------------//
功能 热键_启动_热键()
    多开1.单开(0)
    //----------以下和单开0一致
    //变量 数组下标, 长度, 顶层句柄
    //窗口句柄 = 窗口.鼠标所在窗口句柄()
    //如果(窗口句柄 > 0)
    //如果(是否重定义)
    //顶层窗口句柄数组 = 数组空间.重定义(顶层窗口句柄数组, 真, Index + 1)
    //窗口句柄数组 = 数组空间.重定义(窗口句柄数组, 真, Index + 1)
    //窗口标题数组 = 数组空间.重定义(窗口标题数组, 真, Index + 1)
    //任务线程句柄 = 数组空间.重定义(任务线程句柄, 真, Index + 1)
    //检测线程句柄 = 数组空间.重定义(检测线程句柄, 真, Index + 1)
    //ts_R = 数组空间.重定义(ts_R, 真, Index + 1)
    //如果结束
    //数组下标 = 数组空间.查找(窗口句柄数组, 窗口句柄)
    //如果(数组下标 == -1)
    //调试输出("[单开] 线程开启 窗口句柄: " & 窗口句柄 & " Index:" & Index)
    //顶层句柄 = 窗口.得到父窗口(窗口句柄)
    //顶层窗口句柄数组[Index] = 顶层句柄
    //窗口句柄数组[Index] = 窗口句柄
    //窗口标题数组[Index] = 窗口.得到标题(顶层句柄)
    //任务线程句柄[Index] = 线程.开启("多开1.任务线程", Index)
    //检测线程句柄[Index] = 1
    //Index = Index + 1
    ////错误误判机制
    //数组空间.大小(窗口句柄数组, 长度)
    //如果(Index != 长度)
    //Index = 长度
    //如果结束
    //是否重定义 = 真
    //如果结束
    //如果结束
功能结束
//------------------------------热键_单停_热键------------------------------//
功能 热键_单停_热键()
    多开1.单开(1)
    //----------以下和单开1一致
    //变量 窗口句柄, 数组下标
    //窗口句柄 = 窗口.鼠标所在窗口句柄()
    //数组下标 = 数组空间.查找(窗口句柄数组, 窗口句柄)
    //如果(数组下标 != -1)
    ////线程解绑
    //ts_R[数组下标].UnBindWindow()
    ////关闭子线程
    //线程.关闭(任务线程句柄[数组下标])
    ////恢复窗口标题
    //ts_R[数组下标].SetWindowText(顶层窗口句柄数组[数组下标], 窗口标题数组[数组下标])
    //顶层窗口句柄数组[数组下标] = null
    //窗口句柄数组[数组下标] = null
    //窗口标题数组[数组下标] = null
    //任务线程句柄[数组下标] = null
    //检测线程句柄[数组下标] = null
    //Index = 数组下标 //0
    //是否重定义 = 假
    //调试输出("[单开] 线程关闭 窗口句柄: " & 窗口句柄 & " 窗口句柄数组:" & 窗口句柄数组[数组下标] & " 数组下标:" & 数组下标 & " Index:" & Index)
    //返回 真
    //否则
    //辅助.消息框("脚本未执行", "提示")
    //如果结束
    //返回 真
功能结束
//------------------------------热键_单停_热键------------------------------//
功能 热键_停止_热键()
    多开1.停止()
功能结束
//------------------------------初始化------------------------------//
功能 初始化()
    热键.销毁("热键_启动")
    热键.销毁("热键_单停")
    热键.销毁("热键_停止")
    热键.注册("热键_启动")
    热键.注册("热键_单停")
    热键.注册("热键_停止")
    //是否成功 = 辅助.注册插件("rc:TSPlug.dll", 真)
    是否成功 = 辅助.注册插件("rc:dm.dll", 真)
    如果(是否成功)
        调试输出("插件注册成功")
        //ts = com("ts.tssoft")
        ts = com("dm.dmsoft")
        版本 = ts.Ver()
        调试输出("版本:" & 版本)
    否则
        调试输出("插件注册失败")
    如果结束
功能结束
//------------------------------多开1_关闭------------------------------//
功能 多开1_关闭()
    热键.销毁("热键_启动")
    热键.销毁("热键_单停")
    热键.销毁("热键_停止")
    //辅助.注册插件("rc:TSPlug.dll", 假)
    辅助.注册插件("rc:dm.dll", 假)
    辅助.退出()
功能结束
空间结束
输出>>"插件注册成功"          行号:228 文件:c:\users\administrator\desktop\新建文件夹\多开1\多开1\多开1.t
输出>>"版本:3.1233"          行号:232 文件:c:\users\administrator\desktop\新建文件夹\多开1\多开1\多开1.t
输出>>"---------------------------------------------------------------"          行号:50 文件:c:\users\administrator\desktop\新建文件夹\多开1\多开1\多开1.t
输出>>"[单开] 线程开启 窗口句柄: 4000230 Index:0"          行号:65 文件:c:\users\administrator\desktop\新建文件夹\多开1\多开1\多开1.t
输出>>"[任务线程] 下标: 0"          行号:12 文件:c:\users\administrator\desktop\新建文件夹\多开1\多开1\多开1.t
输出>>"[任务线程] 任务线程绑定失败"          行号:35 文件:c:\users\administrator\desktop\新建文件夹\多开1\多开1\多开1.t
输出>>"---------------------------------------------------------------"          行号:50 文件:c:\users\administrator\desktop\新建文件夹\多开1\多开1\多开1.t
输出>>"[单开] 线程关闭 窗口句柄: 4000230 窗口句柄数组: 数组下标:0 Index:0"          行号:104 文件:c:\users\administrator\desktop\新建文件夹\多开1\多开1\多开1.t
求高手看看,按键精灵dx模式可以绑定的游戏,TC就不行,是哪里错了吗?求指点。
回复

使用道具 举报

发表于 2014-2-21 01:47:20 | 显示全部楼层
既然你后期用的大漠插件,你在绑定后调用一下GetLastError()看看返回值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-21 14:56:29 | 显示全部楼层
按键精灵的可以在绑定下面直接加TracePrint dm.GetLastError()就可以
TC这个是多开绑定下加TracePrint  ts.GetLastError()不行ts.GetLastError()也不行,那应该要怎么写?
请指点下。
谢谢了
回复 支持 反对

使用道具 举报

发表于 2014-2-21 16:04:00 | 显示全部楼层
你看这样行不行?
var ret_error=ts.GetLastError()
TracePrint("ret_error=" & ret_error)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-21 18:56:34 | 显示全部楼层
dongyijun1979 发表于 2014-2-21 16:04
你看这样行不行?
var ret_error=ts.GetLastError()
TracePrint("ret_error=" & ret_error)

http://bbs.tyuyan.com/thread-35769-1-1.html
源码是这里的。
var ret_error=ts.GetLastError()
TracePrint("ret_error=" & ret_error
还是不行。
但是换成管理员权限可以绑定了,看来我的知识还不够啊。
在这里再次感谢你的热心帮助,非常感谢。
回复 支持 反对

使用道具 举报

发表于 2014-2-21 19:28:12 | 显示全部楼层
364190064 发表于 2014-2-21 18:56
http://bbs.tyuyan.com/thread-35769-1-1.html
源码是这里的。
var ret_error=ts.GetLastError()

客气
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-24 09:47 , Processed in 0.037121 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表