1、学会用按键精灵制作游戏脚本之前后台坐标关联教程来源:按键学院 【按键精灵】各位大大在切换前后台命令的时候,有没有遇到坐标切换呢有没有发现前后台的命令,对同一个窗体内容,居然坐标不同!今天院刊就跟大家普及下前台坐标与相对应的后台坐标知识什么是前台坐标和后台坐标呢?什么是前台坐标?以屏幕左上角的坐标为起点(0,0),从而获取到的各个窗体的坐标,就是前台坐标。什么是后台坐标?以窗口左上角为起点(0,0),从而获取到的这个窗体内的相对坐标,就是后台坐标。如图:我们来举个栗子吧,例如 txt 文本里的输入文字的起始点。至此,各位大大知道前后台坐标的联系了吧。一个是绝对坐标(前台),一个是相对坐标(后台)
2、。那么如何进行前后台坐标的切换呢从上图里,聪明机智的小伙伴们就会发现:如果知道了前台坐标,也知道了窗口左上角的值。那么窗口客户区内的任意后台的坐标,不是都可以通过以下计算来获得了:后台 x 坐标=客户区前台 x 坐标-客户区左上角前台 x 坐标后台 y 坐标=客户区前台 y 坐标-客户区左上角前台 y 坐标如何获得客户区前台的 x,y 坐标呢?我们使用按键精灵自带的窗体插件命令:GetWindowRect 来获取。命令名称: GetWindowRect 窗口边框大小命令功能: 得到窗口句柄的边框大小( 包括标题栏 )命令参数: 参数 1 整数型,窗口句柄返 回 值: 字符串型,边框大小( 包括
3、标题栏 )注:返回为:边框窗口左角 X 坐标| 边框窗口左上角 Y 坐标|边框窗口右下角 X 坐标|边框窗口右下角 Y 坐标/下面这句是得到窗口句柄的边框大小(包括标题栏)sRect = Plugin.Window.GetWindowRect(句柄)将你所要获取的窗口句柄填入括号内就可以啦范例举例:举个萌萌哒的例子:向记事本特定位置输入文字。例如我要往“hello”和“按键精灵”中间插入文字:思路:每次打开记事本的位置,有可能会有变化。而我们又不能每次都要去获取它的坐标再改脚本,这样太费力了。所以呢,只要锁定了记事本,知道了目标在记事本中的相对位置就可以操作啦。同理,寻找游戏里的物品目标,前台
4、不稳定。后台命令也是基于相对坐标的。1. 先找到目标窗体的左上角坐标(通过窗体插件命令:GetWindowRect 来获取)2. 再找到目标窗体内, “hello”和“按键精灵”中间的坐标(为了方便,我们用抓抓获取。在游戏中,可以通过找图找色来获取前台坐标)算出相对坐标,后台命令鼠标点击(后台 x 坐标=客户区前台 x 坐标-客户区左上角前台 x 坐标)(后台 y 坐标=客户区前台 y 坐标- 客户区左上角前台 y 坐标)(后台命令我们用按键自带的后台插件 Bkgnd)4. 输入文字啦。/下面这句是得到窗口句柄的边框大小(包括标题栏)sRect = Plugin.Window.GetWindo
5、wRect(592496)MsgBox “得到窗口句柄的边框大小(包括标题栏) 为:“& sRect/下面这句用于分割字符串,将横坐标和纵坐标分成两个字符串dim MyArrayMyArray = Split(sRect, “|“)后台坐标 x = MyArray(0)后台坐标 y=MyArray(1)Call Plugin.Bkgnd.MoveTo(592496, 132-后台坐标 x, 232-后台坐标 y)Call Plugin.Bkgnd.LeftClick(592496, 132-后台坐标 x, 232-后台坐标 y)知识拓展:后台插件 Bkgnd命令名称: MoveTo 鼠标移动命
6、令功能: 向后台窗口句柄发送一个鼠标移动到坐标处 (注意:只支持部分窗口,以实际测试为准。)命令参数: 参数 1 整数型,窗口句柄参数 2 整数型,窗口 X 坐标参数 3 整数型,窗口 Y 坐标返 回 值: 无命令名称:LeftClick 左键单击命令功能: 向后台窗口句柄送一个鼠标左键单击 (注意:只支持部分窗口,以实际测试为准。)命令参数:参数 1 整数型,窗口句柄参数 2 整数型,窗口 X 坐标参数 3 整数型,窗口 Y 坐标返 回 值:无当然,当 window 主题更换的时候,可能用 GetWindowRect 窗口边框大小 这个命令并不便捷,大家也可以试试另一个 window 插件 GetClientRect 窗口客户区大小 。相同的思路,更稳定更通用。