• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

返回列表 12345678» / 31
发新话题 回复该主题

[技术交流] 【院刊】-【201409期】前台坐标与后台坐标转换 [复制链接]

1#

前台坐标与相对应的后台坐标的关联

各位大大在切换前后台命令的时候,有没有遇到坐标切换呢~
有没有发现前后台的命令,对同一个窗体内容,居然坐标不同!!
今天~院刊就跟大家普及下前台坐标与相对应的后台坐标知识~



什么是前台坐标和后台坐标呢?

什么是前台坐标?
以屏幕左上角的坐标为起点(0,0),从而获取到的各个窗体的坐标,就是前台坐标。

什么是后台坐标?
以窗口左上角为起点(0,0),从而获取到的这个窗体内的相对坐标,就是后台坐标。

如图:

您所在的用户组无法下载或查看附件


我们来举个栗子吧,例如txt文本里的输入文字的起始点。



您所在的用户组无法下载或查看附件


至此,各位大大知道前后台坐标的联系了吧。一个是绝对坐标(前台),一个是相对坐标(后台)。



那么如何进行前后台坐标的切换呢



从上图里,聪明机智的小伙伴们就会发现:如果知道了前台坐标,也知道了窗口左上角的值。那么窗口客户区内的任意后台的坐标,不是都可以通过以下计算来获得了:

后台x坐标=客户区前台x坐标-客户区左上角前台x坐标
后台y坐标=客户区前台y坐标-客户区左上角前台y坐标




如何获得客户区前台的x,y坐标呢?


我们使用按键精灵自带的窗体插件命令:GetWindowRect来获取。

命令名称: GetWindowRect 窗口边框大小
命令功能: 得到窗口句柄的边框大小(包括标题栏)
命令参数: 参数1 整数型,窗口句柄
返 回 值: 字符串型,边框大小(包括标题栏)


注:返回为:边框窗口左角X坐标|边框窗口左上角Y坐标|边框窗口右下角X坐标|边框窗口右下角Y坐标

  1. //下面这句是得到窗口句柄的边框大小(包括标题栏)
  2. sRect = Plugin.Window.GetWindowRect(句柄)
  3. 将你所要获取的窗口句柄填入括号内就可以啦~
复制代码


范例举例:

举个萌萌哒的例子:向记事本特定位置输入文字。
例如我要往“hello”和“按键精灵”中间插入文字:

您所在的用户组无法下载或查看附件



思路:

每次打开记事本的位置,有可能会有变化。而我们又不能每次都要去获取它的坐标再改脚本,这样太费力了。所以呢,只要锁定了记事本,知道了目标在记事本中的相对位置就可以操作啦。
同理,寻找游戏里的物品目标,前台不稳定。后台命令也是基于相对坐标的。



1. 先找到目标窗体的左上角坐标
(通过窗体插件命令:GetWindowRect来获取)
2. 再找到目标窗体内,“hello”和“按键精灵”中间的坐标
(为了方便,我们用抓抓获取。在游戏中,可以通过找图找色来获取前台坐标)

您所在的用户组无法下载或查看附件


3. 算出相对坐标,后台命令鼠标点击
(后台x坐标=客户区前台x坐标-客户区左上角前台x坐标)
(后台y坐标=客户区前台y坐标-客户区左上角前台y坐标)
(后台命令我们用按键自带的后台插件Bkgnd)
4. 输入文字啦。

  1. //下面这句是得到窗口句柄的边框大小(包括标题栏)
  2. sRect = Plugin.Window.GetWindowRect(592496)
  3. MsgBox "得到窗口句柄的边框大小(包括标题栏)为:"& sRect
  4. //下面这句用于分割字符串,将横坐标和纵坐标分成两个字符串
  5. dim MyArray
  6. MyArray = Split(sRect, "|")
  7. 后台坐标x = MyArray(0)
  8. 后台坐标y=MyArray(1)

  9. Call Plugin.Bkgnd.MoveTo(592496, 132-后台坐标x, 232-后台坐标y)
  10. Call Plugin.Bkgnd.LeftClick(592496, 132-后台坐标x, 232-后台坐标y)
复制代码


知识拓展:后台插件Bkgnd

命令名称: MoveTo 鼠标移动
命令功能: 向后台窗口句柄发送一个鼠标移动到坐标处 (注意:只支持部分窗口,以实际测试为准。)
命令参数: 参数1 整数型,窗口句柄
参数2 整数型,窗口X坐标
参数3 整数型,窗口Y坐标
返 回 值:

命令名称: LeftClick 左键单击
命令功能: 向后台窗口句柄送一个鼠标左键单击 (注意:只支持部分窗口,以实际测试为准。)
命令参数: 参数1 整数型,窗口句柄
参数2 整数型,窗口X坐标
参数3 整数型,窗口Y坐标
返 回 值:


当然,当window主题更换的时候,可能用GetWindowRect 窗口边框大小 这个命令并不便捷,大家也可以试试另一个window插件 GetClientRect 窗口客户区大小 。相同的思路,更稳定更通用。


本文由按键学院提供技术支持

按键学院实战班(入驻最终幻想)火热招生

按键学院基础视频抢先观看





    已有4评分我要评分查看所有评分

    本主题由 超级版主 瑞祥幽冥狼 于 2023/7/27 8:30:26 执行 审核帖子 操作
    <strong>按键学院交流群(开放中):376122403<br />
    <br />
    <a href="http://bbs.anjian.com/thread-548439-1-1.html" target="_blank">按键学院开班<strong> <font color="Red">【安卓导师】+【实战导师】招聘导师</font></strong>啦~~<font color="Red"><strong>待遇特别好,有钱,就是任性。</strong> </font></a><br />
    <br />
    <br />
    <a href="http://bbs.anjian.com/t
    2#

    fasdasdasdasdasdasdasdasdasdasdasd

    3#

    renzhenxuexiea

    4#

    谢谢分享

    5#

    学习学习,正需要呢。

    6#

    前台坐标与后台坐标转换

    7#

    111111111111111111111111111111111111111111111111111111111111111111111111111

    8#

    x = 4y = 30

    9#

    learn more, share more

    10#

    学习下

    11#

    ddddddddddddddddddddddd

    12#

    该内容需您回复才可浏览 *****

    13#

    ``````````

    14#

    新人前来学习

    15#


    16#

    11111

    17#

    大神我來看你了

    徵腳本項目合作
    1+1>2 這就是綜效
    18#

    cool~~~~~`````

    19#

    学习一下学习一下

    20#

    特瑞特与他人有人头

    发新话题 回复该主题