梦幻西游手游5开自动化挖藏宝图--7

问题

在之前文档中
梦幻西游手游5开自动化挖藏宝图–5
多开时,通过桌面全局查询藏宝图时,概率出现不能识别藏宝图图标。

环境

环境:在PC端通过梦幻西游时空,实现5开
自动化环境搭建,查看之前的文章

软件:
pycharm
python 3.0以上
airtest

思路

通过获取梦幻西游窗口句柄,然后一一对窗口内藏宝图图标进行识别。

正文

1.获取句柄

def get_mhxy_all_hwnd(title="梦幻西游"):
    '''
    获取窗口标题中含有title字段的句柄
    :param title: 默认值为“梦幻西游”
    :return: 
    '''
    title
    
    # 根据句柄,最小化
    hwnd_list = []
    win32gui.EnumWindows(lambda hwnd, param: param.append(hwnd), hwnd_list)
    for hwnd in hwnd_list:
        title = win32gui.GetWindowText(hwnd)
        if (title.find(title)>= 0):
            print("句柄:", hwnd, "标题:", title)
            hwnd_list.append(hwnd)
    return hwnd

2.获取核心代码

通过airtest软件,获取识别和点击藏宝图代码

2.1 连接设备

1)打开airtest软件,在windows窗口中点击 选择游戏画面,选择任意一个梦幻西游窗口
在这里插入图片描述2)使用藏宝网,使进入如下界面
在这里插入图片描述3).点击touch,与wait框选的区域中,再框选需要点击的区域,”使用“,结果如下图:
在这里插入图片描述

4).找到airtest存放的脚本路径,应当有2张图片和1个.py文件
在这里插入图片描述

5).用记事本打开.py文件,记住现在airtest进行保存。
在这里插入图片描述

最近实测发现,需要在代码上点击坐标时,需要加上随机值,不然会被监控。

pos = wait() #获取点击的坐标
touch((pos[0]+randmon,pos[1]+randmon),times=2) #具体随机方法,可以百度查询。横着坐标范围大些,纵坐标范围适当小些,避免点击不到控件。

2.2 挖藏宝图方法

在这里插入图片描述找到airtest存放的脚本路径,应当有2张图片,放到与脚本相同路径下。否则将提示找到png文件

2.3主函数

def run_cangbaotu(couter):
    '''
    :param couter: 每个窗口执行次数
    :return:
    '''
    hwnds = get_mhxy_all_hwnd(title="梦幻西游")
    for i in range(couter):
        for j in range(len(hwnds)):
            cangbaotu(hwnds[j])
            sleep(5)
 if __name__ == '__main__':
    run_cangbaotu(20) #20表示每个窗口执行20次
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值