TC官方合作论坛
标题:
空间参数传递问题(大漠对象)
[打印本页]
作者:
xiaoqix
时间:
2015-7-30 02:51
标题:
空间参数传递问题(大漠对象)
本帖最后由 xiaoqix 于 2015-7-30 02:58 编辑
复制代码
变量 dm
功能 主程序()
dm=插件("dm.dmsoft")
子程序1()
子程序2()
子程序3()
结束
功能 子程序1()
dm=插件("dm.dmsoft")
dm.MoveTo(100,100)
结束
功能 子程序2()
dm=插件("dm.dmsoft")
dm.MoveTo(110,110)
结束
功能 子程序3()
dm=插件("dm.dmsoft")
dm.MoveTo(120,120)
结束
复制代码
论坛看了一些空间参数传递的资料,但是5.0后 有点看不清楚,刚刚接触TC没几天
请问,大漠插件的情况下
主程序 调用子程序的时候,因为要使用大漠命令,请问除了 把每个子程序里 都创建一个大漠对象外,还有其他方法可以让字程序里直接使用大漠吗
子程序现在 不加 创建大漠对象,根本无法使用
自己试着学习参数传递,但是不成功听说 如果按照我这个创建大漠对象的方式,可能会增加脚本运行负担
求解答下 我该如果做呢
作者:
这论坛不错
时间:
2015-7-30 04:19
单开的话,大漠对象作为全局变量,多开的话,大漠对象作为全局数组~直接调用全局的对象
作者:
lidongxu
时间:
2015-7-30 08:11
//代码以鼠标指向记事本为例.如要测试,请先把鼠标移动到记事本编辑区再按下热键
//声明全局变量
变量 窗口句柄 = 数组() //保存窗口句柄的数组
变量 线程句柄 = 数组() //保存线程句柄的数组
变量 dm = 数组() //保存dm对象的数组
//===================================启动热键===================================\\
功能 hotkey0_onhotkey() //启动热键
蜂鸣(800,120) //响一下表示热键有效
变量 句柄 = 获取句柄() //调用获取句柄功能 并返回句柄
如果(句柄 > 0) //判断句柄是否大于0
窗口绑定(句柄) //调用窗口绑定功能 同时把句柄这个参数传递过去
结束
结束
//===================================单停热键===================================\\
功能 hotkey1_onhotkey() //单停热键
蜂鸣(800,120) //响一下表示热键有效
变量 句柄 = 窗口获取鼠标所在句柄()//鼠标指向获取窗口句柄
变量 索引 = 数组查找(窗口句柄,句柄) //调用数组查找功能 返回索引值
如果(索引 != -1) //判断句柄是否存在数组里 -1表示这个窗口当前没有脚本在运行 != -1表示这个窗口正在运行脚本
dm[索引].UnBindWindow() //大漠窗口解绑
线程关闭(线程句柄[索引])//停止该窗口线程
窗口句柄[索引] = null //把该窗口句柄元素清空
线程句柄[索引] = null //把该线程句柄元素清空
dm[索引] = null //把该大漠对象元素清空
否则
消息框("该窗口未执行脚本") //弹出消息框提示
结束
结束
//===================================全停热键===================================\\
功能 hotkey2_onhotkey() //全挺热键
蜂鸣(800,120) //响一下表示热键有效
变量 大小 = 数组大小(窗口句柄) //获得数组的大小
遍历(变量 i = 0; i < 大小; i++) //有多少个窗口就执行多少遍
dm[i].UnBindWindow() //大漠窗口解绑
线程关闭(线程句柄[i]) //关闭线程,结束脚本
结束
数组清空(窗口句柄) //清空窗口句柄数组
数组清空(线程句柄) //清空线程句柄数组
数组清空(dm) //清空大漠对象数组
结束
//===================================获取窗口句柄===================================\\
功能 获取句柄()
变量 游戏窗口类名 = "Edit" //以记事本为例
变量 句柄 = 窗口获取鼠标所在句柄() //鼠标指向获取窗口句柄
如果(句柄 > 0)
如果(字符串查找(窗口获取类名(句柄),游戏窗口类名) != -1)//判断是否是记事本窗口 也可以通过标题来判断
如果(数组查找(窗口句柄,句柄) == -1)//判断窗口句柄是否重复 -1表示该窗口是新窗口
如果(数组查找(窗口句柄,null) == -1)//判断是否要添加新窗口元素 -1表示添加新元素
数组追加元素(窗口句柄,null) //执行窗口追加元素
结束
//下面把得到的窗口句柄存放进数组里
变量 大小 = 数组大小(窗口句柄) //得到数组的大小
如果(大小 > 0)
遍历(变量 i = 0; i < 大小; i++) //有多少个数组元素就执行多少遍
如果(窗口句柄[i] == null)//判断数组里面有没有空位 有就把句柄存放里面
窗口句柄[i] = 句柄 //把句柄赋值给数组成员
返回 窗口句柄[i] //返回 窗口句柄[i]
结束
结束
结束
否则
消息框("请不要对该游戏窗口重复运行脚本","提示") //消息框提示
返回 -1
结束
否则
消息框("窗口不正确","提示") //消息框提示
返回 -1
结束
结束
结束
//===================================主窗口绑定===================================\\
功能 窗口绑定(句柄)
变量 索引 = 数组查找(窗口句柄,句柄)//获取句柄在数组里的索引
dm[索引] = 插件("dm.dmsoft") //创建大漠对象
// dm[索引].SetShowErrorMsg(0) //设置是否弹出错误信息
dm[索引].SetPath(获取资源路径("rc:"))//设置大漠资源路径
dm[索引].SetDict(0,"test.txt")//设置大漠默认字库
// dm[索引].SetDict(0,获取资源路径("rc:test.txt"))//设置大漠默认字库
traceprint(获取资源路径("rc:test.txt"))
var ret = dm[索引].BindWindow(句柄,"normal","normal","normal",0)//绑定窗口
如果(ret != 1)
调试输出("绑定窗口失败")
返回 -1
结束
调试输出("绑定窗口成功")
线程句柄[索引] = 线程开启("主程序",索引)//开启线程
结束
//===================================主程序===================================\\
功能 主程序(索引)
循环(真)//死循环
窗口发送字符串(窗口句柄[索引],索引)
等待(500)
结束
结束
//===================================数组查找===================================\\
功能 数组查找(名称,要查找的内容) //这是一个自己封装的函数,和4.0版本中的函数 数组空间.查找() 起到一样的作用.
变量 大小 = 数组大小(名称) //得到数组的大小
如果(大小 == 0) //判断这个数组是不是空的
返回 -1 //既然是个空数组 那么查找任何内容都是徒劳 所以是找不到的 返回 -1
否则
// 变量 值,key
遍历(变量 i = 0; i < 大小; i++) //遍历所有的数组成员
// 数组获取元素(名称,i,值,key)
如果(要查找的内容 == 名称[i]) //看看要查找的内容是不是和某个数组成员相等.相等就说明要查找的内容在数组里
返回 i //返回索引
结束
结束
//这里是遍历完所有的数组成员后 还是没有相等的内容 就说明数组里面没有要查找的内容 返回-1
返回 -1
结束
结束
//===================================热键0失去焦点事件===================================\\
功能 hotkey0_killfocus() //自定义热键0
热键销毁("hotkey0") //先销毁旧的热键0键码
热键注册("hotkey0") //再注册新的热键0键码
结束
//===================================热键1失去焦点事件===================================\\
功能 hotkey1_killfocus() //自定义热键1
热键销毁("hotkey1") //先销毁旧的热键1键码
热键注册("hotkey1") //再注册新的热键1键码
结束
//===================================热键2失去焦点事件===================================\\
功能 hotkey2_killfocus() //自定义热键2
热键销毁("hotkey2") //先销毁旧的热键2键码
热键注册("hotkey2") //再注册新的热键2键码
结束
复制代码
作者:
xiaoqix
时间:
2015-7-30 12:33
这论坛不错 发表于 2015-7-30 04:19
单开的话,大漠对象作为全局变量,多开的话,大漠对象作为全局数组~直接调用全局的对象 ...
变量 配置文件名,dm_ret,ver,线程ID,窗口句柄,hwnd,路径,ret
变量 启动键值,启动功能键,终止键值,终止功能键,暂停键值,暂停功能键,暂停功能键
变量 挂机1选项,挂机1选项,挂机2选项,挂机3选项,挂机4选项,挂机5选项,挂机6选项
变量 优先选中,顺序选中
变量 线程ID=0,是否暂停=假
变量 dm = 插件("dm.dmsoft")
复制代码
我这样做,子程序里 还是没法调用
求帮忙 谁能把我主题里的样例直接修改下发出来呢
作者:
这论坛不错
时间:
2015-7-30 15:38
论坛有单开单停,多开单停的例子,自己搜索下
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1