python调用大漠插件教程03窗口绑定实例
怎样利用注册好的大漠对象来绑定窗口?
直接上代码,根据代码分析
from win32com.client import Dispatch
import os
from win32gui import FindWindow class Operation: def __init__(self, dm, hwnd):
self.dm = dm
self.hwnd = hwnd
self.dm.Reg('注册码', '')
print(self.dm.Ver())
self.bind() def bind(self):
self.dm.BindWindowEx(self.hwnd, "normal", "normal", "normal", "", 0)
self.dm.SetSimMode(0)
self.dm.EnableRealKeypad(1)
self.dm.EnableRealMouse(2, 20, 30)
self.dm.SetKeypadDelay("normal", 70)
self.dm.SetClientSize(self.hwnd, 596, 446)
print(self.dm.GetClientSize(self.hwnd))
print('绑定成功') def regsvr():
try:
dm_1 = Dispatch('dm.dmsoft')
except Exception:
os.system(r'regsvr32 /s %s\dm.dll' % os.getcwd())
dm_1 = Dispatch('dm.dmsoft')
print(dm_1.Ver())
return dm_1 if __name__ == '__main__':
window_id = FindWindow('Notepad', None)
dm_main = regsvr()
operation = Operation(dm_main, window_id)
首先想要绑定窗口需要先找到要绑定的窗口,那么怎么找到要绑定的窗口?
这需要用到pywin32库的Findwindow函数(python最好使用32位版本,否则会出现一些不为人知的问题,若64位没问题,请忽略)(大漠自带的也有寻找窗口的函数,本人只介绍这个,对大漠找窗口函数感兴趣的可以自行研究,大同小异)
此函数寻找窗口有两个参数,一个是窗口类名,另一个是窗口内容,一般只填窗口类名就可以了。如果此类中有很多窗口那就需要用内容进行筛选。
此函数的返回值若寻找到窗口就返回窗口句柄,未找到则返回0,如果找到多个窗口则返回一个列表,元素为窗口的句柄。
上述代码主函数的第一行以记事本为类名寻找了记事本窗口的句柄,即为变量window_id。
主函数第二行利用regsvr()实例化了一个大漠对象,即为变量dm_main。
主函数第三行实例化了一个自己创建的Operation类,将两个需要的参数都传给这个类,实力后的类为operation。也是这个博客的重点。
先总体分析一下Operation类,开始时一个构造函数,随后是一个交bind的绑定函数,在构造函数中调用绑定函数,则在实例化该类时就会执行目前该类的所有代码(属于python基础,不过多解释)
其次逐行分析代码(一目了然的跳过)dm.Reg函数是大漠插件的付费密码,第一个填自己的注册码,第二个填入自己的备注(没有则不填),此函数在调用大漠插件的方法之前必须使用。
随后是dm.Ver()函数,返回大漠插件的版本,输出方便查看是否正确(方便调试)
下面开始讲bind()函数里的方法。
这里基本上都是一些大漠的内部函数,至于函数的功能及用法,在 大漠插件接口说明 中已经说的是非常详细了,这里主要介绍这几个自己写代码中常用到的函数,方便大家刚接触大漠找到重点。
dm.BindWindowEx(self.hwnd, "normal", "normal", "normal", "", 0)绑定窗口函数。
dm.SetSimMode(0)设置鼠标的前台模拟方式,有需求的话可以切换。
dm.EnableRealKeypad(1)设置键盘的仿真,即按下按键和放开按键的间隔随机而定(有函数作用范围,现在未讲,可以忽略)。
dm.EnableRealMouse(2, 20, 30)设置鼠标的仿真,鼠标动作模拟真实操作,带移动轨迹,以及点击延时随机。
dm.SetKeypadDelay("normal", 70)设置键盘按下放松的随机区间。
dm.SetClientSize(self.hwnd, 596, 446)设置窗口内容区域大小(什么是窗口内容区?就是除去窗口上面显示窗口类名和关闭窗口的条形剩下的区域)。
dm.GetClientSize(self.hwnd)获取窗口内容区域大小。 上面是绑定窗口前需要初始化的一些常用函数,如果运行成功,输出了绑定成功说明使用大漠插件的第一步已经做到了(如下所示)。
备注:直接复制代码需要考虑路径问题,根据自己的路径自行修改,最好是用相对路径,把dm.dll放在自己的项目文件夹里。(大漠插件接口说明文档使用大漠的话完整插件自带)
如有问题请联系我qq:1009981067
python调用大漠插件教程03窗口绑定实例的更多相关文章
- python调用大漠插件教程02大漠插件绑定测试工具
什么是大漠插件绑定测试工具? 这是大漠插件为了方便使用者调试绑定窗口的模式而设计的,因为有些程序不会接受一般的鼠键事件的响应模式,每个程序所需要的响应模式都不尽相同,所以这个工具可以使我们在绑定窗口时 ...
- python调用大漠插件教程01注册大漠
使用大漠有两种方法,一种是直接调用特殊的dll实现不注册就能使(本人不会),另一种则是注册后使用. 如何用python注册大漠? from win32com.client import Dispatc ...
- python调用大漠插件教程04鼠键事件及基本项目思维
from win32com.client import Dispatch import os from random import uniform from time import sleep cla ...
- Python调用大漠插件
Python版本要用32位的?我去官网下载,太慢了,就在腾讯软件里面下载了一个,结果实验成功 import win32com.client dm = win32com.client.Dispatch( ...
- python使用大漠插件进行脚本开发的尝试(一)
关于游戏脚本是纯然的小白,记一下学习过程遇到的问题.是在win10系统下对PC端的游戏进行脚本编辑,不知道会不会半途放弃. 一.大漠插件 大漠插件在游戏脚本编辑过程中是比较常见的工具,按我理解大致做的 ...
- C#调用大漠插件,发送QQ和微信消息
大漠插件就不过多介绍了,不知道的请查下百度.主要是讲解C#怎么调用大漠插件. 大漠插件提供了COM版本,C#直接点击引用,添加即可.然后注册下大漠插件到系统文件夹,注册代码如下: static str ...
- C#调用大漠插件的方法和实例
大漠插件是一个很不错的东西,在按键精灵和易语言里面用得很多,可以后台找图找字,写游戏自动脚本用得特别多.前面写一个微信的自动脚本,查了一些资料,易语言不太熟悉,按键精灵功能上可能不好实现,就找了些资料 ...
- Delphi调用大漠插件示例
Delphi XE2 版本调用大漠插件方法:打开Component->Import Component->默认Import a Type Library,点击Next->找到Dm.d ...
- C#调用大漠插件
大漠插件是一个很不错的东西,在按键精灵和易语言里面用得很多,可以后台找图找字,写游戏自动脚本用得特别多.前面写一个微信的自动脚本,查了一些资料,易语言不太熟悉,按键精灵功能上可能不好实现,就找了些资料 ...
随机推荐
- 慎用ToLower和ToUpper,小心把你的系统给拖垮了
不知道何时开始,很多程序员喜欢用ToLower,ToUpper去实现忽略大小写模式的字符串相等性比较,有可能这个习惯是从别的语言引进的,大胆猜测下是JS,为了不引起争论,我指的JS是技师的意思~ 一: ...
- 题目分享D 二代目
题意:给定一个T条边的无向图,求S到E恰好经过N条边的最短路径 T≤100 N≤1000000 分析:(据说好像假期学长讲过) 首先很容易想到的是dp[i][j][k]表示从i到j经过k条边的最短路径 ...
- 似乎是最实用的hashtable知识总结
哈希表:将对象转换为索引,然后存储在数组中. 定义注意点: 对象:就是面向对象中的对象,可以为任何东西.整数.浮点数.日期.字符串.类. 转换:通过hash函数来完成,hash函数是hash表的核心与 ...
- Jmeter系列(9)- jmeter插件入门篇
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 jmeter4.0以上,如现在最 ...
- LateX公式表
转载自xkgjfl 话说为什么LateX公式这么难记 markdown最全数学公式 我们在用markdown写文档时有时候少不了需要插入一些公式,然而markdown公式输入远没有word这么直观,有 ...
- Day_08【面向对象】扩展案例4_年龄为30岁的老王养了一只黑颜色的2岁的宠物……
#分析以下需求,并用代码实现: 1.定义动物类 属性: 年龄,颜色 行为: eat(String something)方法(无具体行为,不同动物吃的方式和东西不一样,something表示吃的东西) ...
- scala 隐式参数
def test(implicit name: String = "susu"): Unit ={ println(name);} 三种调用方法如下:test("dudu ...
- Mysql常用sql语句(14)- 多表查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- vue 自己写组件。
最近在网上看到很多大神都有写博客的习惯,坚持写博客不但可以为自己的平时的学习做好记录积累 无意之中也学还能帮助到一些其他的朋友所以今天我也注册一个账号记录一下学习的点滴!当然本人能力实在有限写出的文章 ...
- SpringCloud Netflix (五) : Hystrix 服务熔断和服务降级
什么是Hystrix 在分布式环境中,许多服务依赖项中的一些服务依赖不可避免地会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助您控制这些分布式服务之间的交互.Hystrix通过隔离服务 ...