from win32com.client importDispatchimportosfrom random importuniformfrom time importsleepclassOperation:def __init__(self, dm, hwnd):

self.dm=dm

self.hwnd=hwnd

self.dm.Reg(‘vacation6c113ef949e77e259bfadb84959f6cbc‘, ‘‘)

self.dm.Ver()

self.bind()defbind(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(‘绑定成功‘)defgetwindowsize(self):

ret=self.dm.GetClientSize(self.hwnd)

self.width, self.height= ret[1], ret[2]print(self.width, self.height)def leftclick(self, xf, yf, ran_x, ran_y, delay=uniform(0.3, 0.5)):

x= xf +uniform(0, ran_x)

y= yf +uniform(0, ran_y)

self.dm.MoveTo(x, y)

self.dm.LeftClick()

sleep(delay)defkeypress(self, n):

self.dm.KeyPress(n)defkeyup(self, n):

self.dm.KeyUp(n)defkeydown(self, n):

self.dm.KeyDown(n)defregsvr():try:

dm_1= Dispatch(‘dm.dmsoft‘)exceptException:

os.system(r‘regsvr32 /s %s\dm.dll‘ %os.getcwd())

dm_1= Dispatch(‘dm.dmsoft‘)print(dm_1.Ver())return dm_1

直接分析代码,代码是上一篇博客的拓展,基本上只在Operation类里添加了几个鼠键方法,同时将主函数转移到了另一个代码文件中。

getwindowsize()获取屏幕的长宽(暂时没有用到)

leftclick()将鼠标移动到指定位置并点击,传递的参数有4-5个,前两个是xy坐标后两个是xy坐标的偏移量,没有也要填0,最后一个是点击过后休息(默认为0.3-0.5秒),也可以手动传入。

keypress()按下后立马放开某键,这个间隔和是否设置随机时间有关,默认值也和绑定窗口键盘的模式有关(SetKeypadDelay("normal", 70))

keyup()按下某键不松

keydown()松开某键

后三个关于键盘的函数都需要传入一个键盘码(int类型),在绑定测试工具中的键盘测试页面可以找到。

以上代码为dmMain.py文件中,下面这段代码是另一个文件test.py文件。

from dmMain importOperationfrom win32gui importFindWindowfrom dmMain importregsvrdefclose_txt_1(operation_1):#随便点击两次观察光标

operation_1.leftclick(100, 10, 5, 5)

operation_1.leftclick(100, 180, 5, 5)defclose_txt_2(operation_1):#组合键 按下alt(不松) 然后按下f(松) 接着按下x(松) 松开alt

operation_1.keydown(18)

operation_1.keypress(70)

operation_1.keypress(88)

operation_1.keyup(18)if __name__ == ‘__main__‘:

window_id= FindWindow(‘Notepad‘, None)

dm_main=regsvr()

operation=Operation(dm_main, window_id)

close_txt_1(operation)#close_txt_2(operation)

这段代码中有两个函数,

第一个函数是随便点击记事本中的内容观察光标闪烁的位置,如果位置变换则鼠标事件响应(此时注释掉了调用第二个关闭记事本函数的语句便于观察)。

第二个则是使用键盘的简捷键关闭记事本的函数(处于被注释状态)。如果取消注释,运行后记事本关闭则键盘事件响应了。

图为一个项目的文件  可供参考。在test.py文件中使用了    from dmMain import regsvr          from dmMain import Operation

两行代码将dmMain.py的所有功能引入。

为什么要这么做?如果要用dm做出一个成型的脚本,如果都放在一个py文件里会显得很乱。

注意:

1.上面的代码中封装的函数很简单只供示范和测试,不同人可以根据需要自己封装比较复杂的函数

2.代码中使用的是前台鼠标模式,如果有需要可以在绑定窗口时改成后台鼠标模式(不过好像记事本并不支持后台鼠标模式,本人也没有测试完全,有待考证)

3.在鼠键事件响应后尽量加上一个休息时间(sleep),否则执行太快容易造成相应失灵的后果

如有问题请联系我qq:1009981067

python使用大漠插件教程_python调用大漠插件教程04鼠键事件及基本项目思维相关推荐

  1. python调用大漠写辅助_Python调用大漠插件

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

  2. python使用大漠插件教程_python调用大漠插件教程05字库

    什么是字库以及字库的作用? 字库是大漠插件特有的功能,字库通过配合大漠插件中的在图中找字的函数来使用,用来实现在图中识别关键字的作用,以便于后来的操作以及判断. 怎样创建一个字库,并在字库中添加文字? ...

  3. python大漠插件多开_绝地助手_python挪用大漠插件教程04鼠键事宜及基本项目头脑...

    pubg辅助_从汉堡加料提及--浅谈C#中的Decorator模式和平精英辅助from win32com.client importDispatchimportosfrom random import ...

  4. 易语言大漠多线程免注册调用大漠插件

    易语言免注册调用大漠 1.使用dmreg.dll来配合实现,这个文件有2个导出接口 SetDllPathW和SetDllPathA. SetDllPathW对应unicode,SetDllPathA对 ...

  5. pythonsocket自动化教程_Python 的 Socket 编程教程

    这是用来快速学习 Python Socket 套接字编程的指南和教程.Python 的 Socket 编程跟 C 语言很像. 基本上,Socket 是任何一种计算机网络通讯中最基础的内容.例如当你在浏 ...

  6. jQuery常用插件(如何调用jQuery插件学习第一天)

    插件是以jQuery的核心代码为基础,编写出符合一定规范的应用程序,并将程序进行打包,调用时,仅需要包含该打包后的JS文件即可.如需要使用表单插件,按下列步骤就可实现插件的调用: (1)在页面中导入包 ...

  7. python插件使用教程_Python常用扩展插件使用教程解析

    扩展插件 我下载的本版自带 pip下载工具 cmd-pip 下载插件 pip install HTMLParser 如果提示版本问题,更新PIP 别用开始里面的CMD 使用管理者权限 请注意差别 输入 ...

  8. python连接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  9. python链接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

最新文章

  1. 干货 | 详解对象检测模型中的Anchors
  2. dial up network
  3. 矩阵论-范数理论及其应用
  4. xml xsd java
  5. HDU 5515 Game of Flying Circus 二分
  6. MyEclipse8.5破解方法
  7. MPEG2简单码流分析
  8. GPU架构(三十三)
  9. 环境试验箱GB/T 2423标准下载合集
  10. 生产线平衡算法matlab,装配生产线任务平衡问题的遗传算法MATLAB源代码
  11. [966]无需ROOT就能让你用上Xposed框架
  12. linux mariadb 升级,Mariadb数据库更新
  13. 如何求取管壁努塞尔数【转载】
  14. 倍福--IO模块灯亮没输出
  15. 安装配置Apache和php
  16. Datagrip数据库连接工具—新建folder操作
  17. ARM学习系列 ---- RISC和CISC概述
  18. 量化交易——传统技术分析布林通道BollingerBands的原理及实现
  19. markdown写作模板
  20. C语言与Go语言有什么区别?

热门文章

  1. 阿里云ECS最新的实例规格族有哪些
  2. linux系统管理与服务器配置高志君_Linux系统管理与服务器配置
  3. 华为虚拟防火墙互通和访问外网
  4. 安装教程之JDK下载与安装
  5. SLF4J日志框架在项目中使用
  6. 车载人机交互语音android,手机与车机如何实现语音智能交互?
  7. vue 全局监听浏览器窗口关闭以及无痕模式场景提示
  8. 下载并安装vue-devtools(详细步骤)
  9. 产品经理学习-加分技能
  10. HTTP Status 404(The requested resource is not available)(转)