使用Python开发游戏运行脚本(三)图片查找

本文接上一篇文章 使用Python开发游戏运行脚本(二)实现模拟点击

上一篇我们已经实现了python调用大漠插件查找指定的窗口,进行窗口句柄绑定,并实现鼠标模拟点击的功能;接下来我们要做的则是通过大漠插件提供的API,实现特定图片的查找功能。

一、截图保存我们需要查找的特定图片

要查找特定图片的第一步,是创建这张图片,并把这张图片存放到python项目的特定目录。
大漠插件支持查找的图片,必须是24位色格式的位图,一听24位色格式的位图是不是有点懵?24位色格式的位图是什么东西?而这种格式的图片我们又该如何创建呢?其实完全不需要担心这个问题,即使你完全没有RGB三色图之类的概念,也依然可以创建出这种图片;因为大漠插件本身为我们提供了一个便捷的工具类【大漠综合工具】,简单几步就能帮我们实现24位位图的截取和保存。

首先我们打开大漠插件的目录,一般大漠插件的根目录如下图所示的结构,里面有dm.dll动态库,大漠接口说明文档,大漠综合工具之类的文件。这里我们需要的是【大漠综合工具】
使用Python开发游戏运行脚本(三)图片查找_第1张图片
打开这个【大漠综合工具】,主页面如下图图所示:
使用Python开发游戏运行脚本(三)图片查找_第2张图片
这个综合工具的功能是非常强大的,这里我们简单介绍两种。

作用1:获取特定窗口的信息

当我们把箭头标注的圆圈拖拽到具体的窗口,然后再点击左侧属性按钮,就能非常直观的看到对应窗口的具体信息了;
使用Python开发游戏运行脚本(三)图片查找_第3张图片
这里我们以【大漠插件接口说明】文档为例,当我们把圆圈拖拽到【大漠插件接口】文档窗口,然后再点击属性按钮,就能看到【大漠插件接口】文档窗口相关的信息了;有了这些信息,我们就能更方便的调用dm.FindWindow(class,title)方法查找具体窗口进行绑定了 。
使用Python开发游戏运行脚本(三)图片查找_第4张图片

作用2:创建24位色格式的bmp位图

这里我们继续以【大漠插件接口说明】文档为例,当我们点击抓图按钮之后,整个桌面就会进入大漠插件的截屏模式,选择左上角的这个主页icon,然后点击确定,就能看到如下图所示的图片了。
使用Python开发游戏运行脚本(三)图片查找_第5张图片
保存我们截取好的【主页】Icon图标到python项目的特定目录,我这里是保存到了picture目录,命名为【icon_01_home.bmp】
使用Python开发游戏运行脚本(三)图片查找_第6张图片

二、进行图片查找

话不多说,这里直接上代码和代码运行结果截图

import win32com.client

if __name__ == '__main__':
    # 调用大漠插件,获取大漠对象
    dm = win32com.client.Dispatch('dm.dmsoft')
    # 设置全局路径,设置了此路径后,所有接口调用中,相关的文件都相对于此路径. 比如图片,字库等
    dm.SetPath("D:\PycharmProject\PythonMouseKey\dmtest\picture")
    # 查找窗口句柄
    window_handle = dm.FindWindow("HH Parent", "大漠接口说明 v3.1233") 
    # 进行窗口绑定
    is_bind_success = dm.BindWindow(window_handle, "normal", "normal", "normal", 0)
    # 查找图片
    if is_bind_success:
        dm_ret = dm.FindPicEx(0, 0, 800, 800, "icon_01_home.bmp", "000000", 0.9, 0)
        print("查找到的图片坐标信息:" + str(dm_ret))

使用Python开发游戏运行脚本(三)图片查找_第7张图片
可以看到,我们成功找到了之前保存在项目目录dmtest\picture文件夹中的【icon_01_home.bmp】图片的位置信息(0,177,3),这个参数的0是序号的意思,如果FindPicEx方法找到多个图片,会以此用**|**号分割,并在相应坐标的前面添加上序号;这里因为只找到了一个,所以只返回了一个。
使用Python开发游戏运行脚本(三)图片查找_第8张图片

你可能感兴趣的:(python,OAID,匿名ID,组件化)