Git Product home page Git Product logo

pydmgame's Introduction

PyDmGame

目录

安装

pip install PyDmGame

初始化

improt PyDmGame
dm = PyDmGame.DM()
dm.SetPath("imagePath") # 设置默认找图路径,不适用找图可以不设置
dm.BindWindow(hwnd,"normal","normal","windows",0) # 绑定模式,请参考后台设置

基本设置

SetPath(path)

设置全局路径,设置了此路径后,所有接口调用中,相关的文件都相对于此路径. 比如图片
:param path 字符串: 路径,绝对路径
返回值:None

后台设置

BindWindow(hwnd,display,mouse,keypad,mode=0)

绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定
:param hwnd 整形数: 指定的窗口句柄
    display 字符串: 屏幕颜色获取方式 取值有以下几种
    "normal" : 正常模式,平常我们用的前台截屏模式
    "gdi" : gdi模式,用于窗口采用GDI方式刷新时

:param mouse 字符串: 鼠标仿真模式 取值有以下几种
    "normal" : 正常模式,平常我们用的前台鼠标模式,api为SendInput函数
    "normal2" : 正常模式,平常我们用的前台鼠标模式,api为event事件,微软官方已废弃,被SendInput取代
    "windows": 后台模式,采取模拟windows消息方式 同按键自带后台插件,api为SendMessage函数,雷电模拟器可用这个模式
    "windows2": 后台模式,采取模拟windows消息方式 同按键自带后台插件,api为PostMessage函数

:param keypad 字符串: 键盘仿真模式 取值有以下几种
    "normal" : 正常模式,平常我们用的前台鼠标模式,api为SendInput函数
    "normal2" : 正常模式,平常我们用的前台鼠标模式,api为event事件,微软官方已废弃,被SendInput取代
    "windows": 后台模式,采取模拟windows消息方式 同按键自带后台插件,api为SendMessage函数,雷电模拟器可用这个模式
    "windows2": 后台模式,采取模拟windows消息方式 同按键自带后台插件,api为PostMessage函数

:param mode 整形数: 模式
    预留接口,此参数可不写
返回值:None

窗口(未测试验证)

ClientToScreen(hwnd,x,y)

把窗口坐标转换为屏幕坐标
:param hwnd 整形数: 指定的窗口句柄
:param x 变参指针: 窗口X坐标
:param y 变参指针: 窗口Y坐标

EnumProcess(name)

:param name 字符串:进程名,比如qq.exe
返回值:返回所有匹配的进程PID,并按打开顺序排序,格式"pid1,pid2,pid3"

EnumWindow(parent,title,class_name,filter)

FindWindow(class,title)

FindWindowByProcess(process_name,class,title)

FindWindowByProcessId(process_id,class,title)

FindWindowEx(parent,class,title)

GetClientRect(hwnd,x1,y1,x2,y2)

GetClientSize(hwnd,width,height)

GetForegroundFocus()

GetForegroundWindow()

GetMousePointWindow()

GetPointWindow(x,y)

GetProcessInfo(pid)

GetSpecialWindow(flag)

GetWindow(hwnd,flag)

GetWindowClass(hwnd)

GetWindowProcessId(hwnd)

GetWindowProcessPath(hwnd)

GetWindowRect(hwnd,x1,y1,x2,y2)

GetWindowState(hwnd,flag)

GetWindowTitle(hwnd)

MoveWindow(hwnd,x,y)

ScreenToClient(hwnd,x,y)

SendPaste(hwnd)

SetClientSize(hwnd,width,height)

SetWindowSize(hwnd,width,height)

SetWindowState(hwnd,flag)

SetWindowText(hwnd,title)

SetWindowTransparent(hwnd,trans)

图色

Capture(x1, y1, x2, y2, file)

抓取指定区域(x1, y1, x2, y2)的图像保存为file,图像后缀任意填写
:param x1 整形数:区域的左上X坐标
:param y1 整形数:区域的左上Y坐标
:param x2 整形数:区域的右下X坐标
:param y2 整形数:区域的右下Y坐标
:param file 字符串:保存的文件名,填写绝对路径,不填写也可以,通过GetCVImg()获取CV图像

CmpColor(x, y, color, sim=1)

比较指定坐标点(x,y)的颜色
x 整形数: X坐标
y 整形数: Y坐标
color 字符串: 颜色字符串,可以支持偏色,支持RGB偏色和HSV偏色
sim 双精度浮点数: 相似度(0.1-1.0)
返回值:
    True颜色匹配
    False颜色不匹配

FindColor(x1, y1, x2, y2, color, sim, dir=None)

查找指定区域内的颜色,支持RGB和HSV颜色
:param x1 整形数:区域的左上X坐标
:param y1 整形数:区域的左上Y坐标
:param x2 整形数:区域的右下X坐标
:param y2 整形数:区域的右下Y坐标
:param color 字符串:颜色 格式为"RRGGBB-DRDGDB",比如"123456-000000",或者HSV格式((0,0,0),(180,255,255))
:param sim 双精度浮点数:相似度,取值范围0.1-1.0
:param dir 整形数:预留参数,可不写
返回值:
    找到:0,x,y
    未找到:-1, -1, -1

FindPic(x1, y1, x2, y2, pic_name, delta_color, sim, method=5, drag=None)

查找指定区域内的图片,返回相似度最大的坐标,原来是利用opencv的模板匹配,默认使用算法5
:param x1:区域的左上X坐标
:param y1:区域的左上Y坐标
:param x2:区域的右下X坐标
:param y2:区域的右下Y坐标
:param pic_name:图片名,只能单个图片
:param delta_color:偏色,可以是RGB偏色,格式"FFFFFF-202020",也可以是HSV偏色,格式((0,0,0),(180,255,255))
:param sim:相似度,和算法相关
:param dir:仿大漠,总共有6总
:param drag:是否在找到的位置画图并显示,默认不画
       方差匹配方法:匹配度越高,值越接近于0。
       归一化方差匹配方法:完全匹配结果为0。
       相关性匹配方法:完全匹配会得到很大值,不匹配会得到一个很小值或0。
       归一化的互相关匹配方法:完全匹配会得到1, 完全不匹配会得到0。
       相关系数匹配方法:完全匹配会得到一个很大值,完全不匹配会得到0,完全负相关会得到很大的负数。
            (此处与书籍以及大部分分享的资料所认为不同,研究公式发现,只有归一化的相关系数才会有[-1,1]的值域)
       归一化的相关系数匹配方法:完全匹配会得到1,完全负相关匹配会得到-1,完全不匹配会得到0。
返回值:
    找到:0,x,y
    未找到:-1, -1, -1

FindPics(x1, y1, x2, y2, pic_name, delta_color, sim, method=5, drag=None)

查找指定区域内的图片,返回多个坐标,原来是利用opencv的模板匹配,默认使用算法5
:param x1:区域的左上X坐标
:param y1:区域的左上Y坐标
:param x2:区域的右下X坐标
:param y2:区域的右下Y坐标
:param pic_name:图片名,只能单个图片
:param delta_color:偏色,可以是RGB偏色,格式"FFFFFF-202020",也可以是HSV偏色,格式((0,0,0),(180,255,255))
:param sim:相似度,和算法相关
:param dir:仿大漠,总共有6总
:param drag:是否在找到的位置画图并显示,默认不画
       方差匹配方法:匹配度越高,值越接近于0。
       归一化方差匹配方法:完全匹配结果为0。
       相关性匹配方法:完全匹配会得到很大值,不匹配会得到一个很小值或0。
       归一化的互相关匹配方法:完全匹配会得到1, 完全不匹配会得到0。
       相关系数匹配方法:完全匹配会得到一个很大值,完全不匹配会得到0,完全负相关会得到很大的负数。
            (此处与书籍以及大部分分享的资料所认为不同,研究公式发现,只有归一化的相关系数才会有[-1,1]的值域)
       归一化的相关系数匹配方法:完全匹配会得到1,完全负相关匹配会得到-1,完全不匹配会得到0。
返回值:
    找到:0,[[x1,y1],[x2,y2],...)]
    未找到:-1, -1, -1

GetCVImg()

获取截图的内存图像,格式cv,需要先使用Capture截图

键鼠

GetCursorPos(x,y)

获取鼠标位置
:param x:鼠标横坐标
:param y:鼠标束坐标

GetCursorShape()

获取鼠标特征码
成功时,返回鼠标特征码.  
失败时,返回空的串.

LeftDown()

按住鼠标左键

LeftUp()

弹起鼠标左键

LeftClick()

单击鼠标左键

LeftDoubleClick()

双击鼠标左键

RightDown()

按住鼠标右键

RightUp()

弹起鼠标右键

RightClick()

单击鼠标右键

SetMouseDelay(self,type,delay)

设置鼠标单击或者双击时,鼠标按下和弹起的时间间隔。高级用户使用。某些窗口可能需要调整这个参数才可以正常点击。
:param type 字符串: 鼠标类型,取值有以下
    "normal" : 对应normal鼠标 默认内部延时为 30ms
    "windows": 对应windows 鼠标 默认内部延时为 10ms
:paramd elay 整形数: 延时,单位是毫秒

MoveTo(x,y)

把鼠标移动到目的点(x,y)
:param x 整形数:X坐标
:param y 整形数:Y坐标

WheelDown()

滚轮向下滚

WheelUp()

滚轮向上滚

SetKeypadDelay(delay=None)

设置按键时,键盘按下和弹起的时间间隔。高级用户使用。某些窗口可能需要调整这个参数才可以正常按键。
type 字符串: 键盘类型,取值有以下
    "normal" : 对应normal键盘  默认内部延时为30ms
    "windows": 对应windows 键盘 默认内部延时为10ms
delay 整形数: 延时,单位是毫秒

KeyDownChar(key_str)

按住指定的虚拟键码

KeyUpChar(key_str)

弹起来虚拟键key_str

KeyPressChar(key_str)

按下指定的虚拟键码

KeyPressStr(key_str,delay)

根据指定的字符串序列,依次按顺序按下其中的字符.
key_str 字符串: 需要按下的字符串序列. 比如"1234","abcd","7389,1462"等.
delay 整形数: 每按下一个按键,需要延时多久. 单位毫秒.这个值越大,按的速度越慢。

SendString(hwnd,str)

向指定窗口发送文本数据
hwnd 整形数: 指定的窗口句柄. 如果为0,则对当前激活的窗口发送.
str 字符串: 发送的文本数据

文字识别

FindNum(x1, y1, x2, y2, numString, color_format, sim)

:param x1: x1 整形数:区域的左上X坐标
:param y1: y1 整形数:区域的左上Y坐标
:param x2: x2 整形数:区域的右下X坐标
:param y2: y2 整形数:区域的右下Y坐标
:param numString: 字符串:如数字"1","56","789"
:param color_format:字符串:颜色格式串, 可以包含换行分隔符,语法是","后加分割字符串. 具体可以查看下面的示例 .注意,RGB和HSV,以及灰度格式都支持.
:param sim: 双精度浮点数:相似度,取值范围0.1-1.0
:return:bool

OcrNum(x1, y1, x2, y2, color_format, sim, dirPath)

:param x1:  x1 整形数:区域的左上X坐标
:param y1: y1 整形数:区域的左上Y坐标
:param x2: x2 整形数:区域的右下X坐标
:param y2: y2 整形数:区域的右下Y坐标
:param color_format: 字符串:颜色格式串, 可以包含换行分隔符,语法是","后加分割字符串. 具体可以查看下面的示例 .注意,RGB和HSV,以及灰度格式都支持.
:param sim: 双精度浮点数:相似度,取值范围0.1-1.0
:param dirPath: 图库路径,用于存储0-9数字模板
:return: num:字符串数字

虚拟按键码

'backspace': 0x08,
'tab': 0x09,
'clear': 0x0C,
'enter': 0x0D,
'shift': 0x10,
'ctrl': 0x11,
'alt': 0x12,
'pause': 0x13,
'caps_lock': 0x14,
'esc': 0x1B,
'spacebar': 0x20,
'page_up': 0x21,
'page_down': 0x22,
'end': 0x23,
'home': 0x24,
'left_arrow': 0x25,
'up_arrow': 0x26,
'right_arrow': 0x27,
'down_arrow': 0x28,
'select': 0x29,
'print': 0x2A,
'execute': 0x2B,
'print_screen': 0x2C,
'ins': 0x2D,
'del': 0x2E,
'help': 0x2F,
'0': 0x30,
'1': 0x31,
'2': 0x32,
'3': 0x33,
'4': 0x34,
'5': 0x35,
'6': 0x36,
'7': 0x37,
'8': 0x38,
'9': 0x39,
'a': 0x41,
'b': 0x42,
'c': 0x43,
'd': 0x44,
'e': 0x45,
'f': 0x46,
'g': 0x47,
'h': 0x48,
'i': 0x49,
'j': 0x4A,
'k': 0x4B,
'l': 0x4C,
'm': 0x4D,
'n': 0x4E,
'o': 0x4F,
'p': 0x50,
'q': 0x51,
'r': 0x52,
's': 0x53,
't': 0x54,
'u': 0x55,
'v': 0x56,
'w': 0x57,
'x': 0x58,
'y': 0x59,
'z': 0x5A,
'numpad_0': 0x60,
'numpad_1': 0x61,
'numpad_2': 0x62,
'numpad_3': 0x63,
'numpad_4': 0x64,
'numpad_5': 0x65,
'numpad_6': 0x66,
'numpad_7': 0x67,
'numpad_8': 0x68,
'numpad_9': 0x69,
'multiply_key': 0x6A,
'add_key': 0x6B,
'separator_key': 0x6C,
'subtract_key': 0x6D,
'decimal_key': 0x6E,
'divide_key': 0x6F,
'f1': 0x70,
'f2': 0x71,
'f3': 0x72,
'f4': 0x73,
'f5': 0x74,
'f6': 0x75,
'f7': 0x76,
'f8': 0x77,
'f9': 0x78,
'f10': 0x79,
'f11': 0x7A,
'f12': 0x7B,
'f13': 0x7C,
'f14': 0x7D,
'f15': 0x7E,
'f16': 0x7F,
'f17': 0x80,
'f18': 0x81,
'f19': 0x82,
'f20': 0x83,
'f21': 0x84,
'f22': 0x85,
'f23': 0x86,
'f24': 0x87,
'num_lock': 0x90,
'scroll_lock': 0x91,
'left_shift': 0xA0,
'right_shift ': 0xA1,
'left_control': 0xA2,
'right_control': 0xA3,
'left_menu': 0xA4,
'right_menu': 0xA5,
'browser_back': 0xA6,
'browser_forward': 0xA7,
'browser_refresh': 0xA8,
'browser_stop': 0xA9,
'browser_search': 0xAA,
'browser_favorites': 0xAB,
'browser_start_and_home': 0xAC,
'volume_mute': 0xAD,
'volume_Down': 0xAE,
'volume_up': 0xAF,
'next_track': 0xB0,
'previous_track': 0xB1,
'stop_media': 0xB2,
'play/pause_media': 0xB3,
'start_mail': 0xB4,
'select_media': 0xB5,
'start_application_1': 0xB6,
'start_application_2': 0xB7,
'attn_key': 0xF6,
'crsel_key': 0xF7,
'exsel_key': 0xF8,
'play_key': 0xFA,
'zoom_key': 0xFB,
'clear_key': 0xFE,
'+': 0xBB,
',': 0xBC,
'-': 0xBD,
'.': 0xBE,
'/': 0xBF,
'`': 0xC0,
';': 0xBA,
'[': 0xDB,
'\\': 0xDC,
']': 0xDD,
"'": 0xDE}

pydmgame's People

Contributors

xiong421 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

pydmgame's Issues

安装失败

安装时出现如下错误:
ERROR: Could not find a version that satisfies the requirement PyDmGame (from versions: none)
ERROR: No matching distribution found for PyDmGame

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.