第二章 大漠插件的基础操作

2,689 阅读2分钟

创建大漠对象

import win32com.client
dm = win32com.client.Dispatch('dm.dmsoft')
print(dm.ver())  # 输出版本号

鼠标操作

dm.moveto(1, 1)  # 移动鼠标到1,1这个点
dm.leftclick()  # 左键单击
dm.rightclick()  # 右键单击
dm.leftdoubleclick()  # 左键双击
dm.GetCursorPos()  # 获取鼠标位置

其他API请查找文档

1644999768(1).png

键盘操作

dm.KeyDownChar(key_str)  # 按住指定的虚拟键码 dm.KeyDownChar('a')
dm.KeyDown(vk_code)  # 按住指定的虚拟键码 dm.KeyDownChar(65)
dm.KeyUpChar(key_str)  # 弹起指定的虚拟键码
dm.KeyPressChar(key_str)  # 按一次指定的虚拟键码
dm.KeyPressStr(key_str,delay)  # 根据指定的字符串序列,依次按顺序按下其中的字符

其他API请查找文档

image.png

找图操作

1. import os  # 导入os库 
2. 截一张图命名为1.bmp放到python文件同一目录下
3. os.getcwd()  # 返回当前python文件的运行目录,也就是说我们把截图保存的路径和运行目录一致
4. dm.setpath(os.getcwd())  # 设置找图路径
5. ret = dm.findpic(0,0,1920,1080,"1.bmp",'050505',0.9,0)  # 查找图片 

模拟找到图标双击打开 完整代码:
import os 
dm.setpath(os.getcwd()) 
ret=dm.findpice(0,0,1920,1080,"1.bmp",'050505',0.9,0) 
print("找到图片的坐标x:" + ret.split("|")[1])
print("找到图片的坐标Y:" + ret.split("|")[2])
dm.moveto(ret.split("|")[1], ret.split("|")[2])  # 移动鼠标到这个点
dm.leftdoubleclick()  # 左键双击
# 因为找到的ret是字符串且格式为(0|x|y),使用字符串分割可得到坐标

dm.FindPicE(x1, y1, x2, y2, pic_name, delta_color,sim, dir)
参数定义:

image.png

窗口操作

1. 窗口句柄的概念:窗口的身份证,用于区分不同窗口,注意这个身份证是变动的,我们要对窗口进行操作首先需要获取这个窗口的
句柄。
2. 获取顶层窗口句柄:dm.GetForegroundWindow()
3. 获取鼠标所在位置句柄:dm.GetMousePointWindow()
4. 枚举窗口句柄:dm.enumwindow()

无标题文档

获取到所有标题栏中有微信这个字符串的窗口句柄集合 完整代码:
hwnds = dm.EnumWindow(0, '微信', '', 1 + 4 + 8 + 16)
print(hwnds)

image.png

后台操作

bindwindowex的函数能够相对于窗口进行操作,并且能够实现多窗口同时操作。
但是这个操作是收费的所以我们需要先去自己注册一个注册码

image.png

image.png

image.png

内存操作与CE工具

CE工具:Cheat Engine
当我们在游戏中需要获取特效动态图片的数值,这种情况用找图去识别就很不现实,所以我们得需要配合CE工具去查找内存,从而获取我们需要的数值。