怎样利用注册好的大漠对象来绑定窗口?

直接上代码,根据代码分析

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窗口绑定实例的更多相关文章

  1. python调用大漠插件教程02大漠插件绑定测试工具

    什么是大漠插件绑定测试工具? 这是大漠插件为了方便使用者调试绑定窗口的模式而设计的,因为有些程序不会接受一般的鼠键事件的响应模式,每个程序所需要的响应模式都不尽相同,所以这个工具可以使我们在绑定窗口时 ...

  2. python调用大漠插件教程01注册大漠

    使用大漠有两种方法,一种是直接调用特殊的dll实现不注册就能使(本人不会),另一种则是注册后使用. 如何用python注册大漠? from win32com.client import Dispatc ...

  3. python调用大漠插件教程04鼠键事件及基本项目思维

    from win32com.client import Dispatch import os from random import uniform from time import sleep cla ...

  4. Python调用大漠插件

    Python版本要用32位的?我去官网下载,太慢了,就在腾讯软件里面下载了一个,结果实验成功 import win32com.client dm = win32com.client.Dispatch( ...

  5. python使用大漠插件进行脚本开发的尝试(一)

    关于游戏脚本是纯然的小白,记一下学习过程遇到的问题.是在win10系统下对PC端的游戏进行脚本编辑,不知道会不会半途放弃. 一.大漠插件 大漠插件在游戏脚本编辑过程中是比较常见的工具,按我理解大致做的 ...

  6. C#调用大漠插件,发送QQ和微信消息

    大漠插件就不过多介绍了,不知道的请查下百度.主要是讲解C#怎么调用大漠插件. 大漠插件提供了COM版本,C#直接点击引用,添加即可.然后注册下大漠插件到系统文件夹,注册代码如下: static str ...

  7. C#调用大漠插件的方法和实例

    大漠插件是一个很不错的东西,在按键精灵和易语言里面用得很多,可以后台找图找字,写游戏自动脚本用得特别多.前面写一个微信的自动脚本,查了一些资料,易语言不太熟悉,按键精灵功能上可能不好实现,就找了些资料 ...

  8. Delphi调用大漠插件示例

    Delphi XE2 版本调用大漠插件方法:打开Component->Import Component->默认Import a Type Library,点击Next->找到Dm.d ...

  9. C#调用大漠插件

    大漠插件是一个很不错的东西,在按键精灵和易语言里面用得很多,可以后台找图找字,写游戏自动脚本用得特别多.前面写一个微信的自动脚本,查了一些资料,易语言不太熟悉,按键精灵功能上可能不好实现,就找了些资料 ...

随机推荐

  1. 【Hadoop离线基础总结】CDH版本的zookeeper环境搭建

    CDH版本的zookeeper环境搭建 下载 下载地址 http://archive.cloudera.com/cdh5/cdh/5/ 修改配置文件 创建ZooKeeper数据存放目录 mkdir - ...

  2. android的布局 (如何实现空心圆效果的布局)

    layer-list : 简单来说layer-list就是图层列表的意思,是用来创建LayerDrawable的,LayerDrawable是DrawableResource的一种,所以,layer- ...

  3. Android广播机制(1)

    目录 简介 发送广播和接收广播方式 广播类型 接收系统广播 动态注册监听网络变化 步骤 优化 静态注册实现开机启动 步骤 注意 简介 就是因为安卓中的每个应用程序都可以对自己感兴趣的广播进行注册,这样 ...

  4. MySQL 入门(5):复制

    摘要 在这篇文章中,我将从MySQL为什么需要主从复制开始讲起,然后会提到MySQL复制的前提,bin log. 在这里会说明三种格式的bin log分别会有什么优缺点. 随后会讲到主从延迟方面的问题 ...

  5. ubuntu下图形程序自启动的几种方法

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ @ 目录 0.前言 1.带桌面环境的自动启动 1.1 ...

  6. Elasticsearch URI search 查询语法整理

    Elasticsearch URI search 一.请求体查询与空查询 1. 请求体查询(request body search) 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如 ...

  7. async/await的语法和使用

    1. async 函数     (1)函数的返回值为promise对象     (2)promise对象的结果由async函数执行的返回值决定 2. await 表达式     (1)await右侧的 ...

  8. Java openrasp学习记录(一)

    前言: 最近一直在做学校实验室安排的项目,太惨了,没多少时间学习新知识,不过rasp还是要挤挤时间学的,先从小例子的分析开始,了解rasp的基本设计思路,后面详细阅读openrasp的源码进行学习!欢 ...

  9. 5.8 Go 单元测试

    5.8 Go 单元测试 如果你不想后半生的美好时光都在寻找BUG中度过,那么必须写些程序用来检测产品代码的结果和预期的一样. Go语言的测试依赖于go test测试命令和一组按约定方式编写的测试函数, ...

  10. 3.5 Go布尔型

    1.Go布尔型 一个布尔类型的值只有两种:true 和 false. if 和 for 语句的条件部分都是布尔类型的值,并且==和<等比较操作也会产生布尔型的值. package main im ...