python自动化UI工具发送QQ消息的实例


Posted in Python onAugust 27, 2019

概述

个人遇到过小的需求,windows自动水群发送垃圾消息,使用一些特别简单易上手的小工具,快速实现功能需求(而不是使用一些重量级的还需要额外花时间去熟悉功能语法的大工具,如UI自动化工具sikulix)。在一番摸索下,得出一番结论:

对于多平台的UI自动复杂操作,还是去学sikulix吧,这不是啃一点win32 api获取窗口句柄就能轻松解决的,毕竟sikulix是MIT大佬折腾出来的。而且,原理也更复杂(通过使用opencv对窗体控件进行识别,进而实现控制操作)。

对于简单的操作(控制剪切板缓存、自动化keyboard操作、desktop光标移动、鼠标点击动作等)可以使用python的一些包进行简单的模拟实现:pyautogui / pywin32 等。

pyautogui是美国一个知名python程序员也是优秀的python作者Al Sweigart维护的一个模块,个人是比较推崇的,因为相对来说,整个模块都是python写的,可读性比较好,对一般功能的封装得很好。pywin32就有点不一样了,这个完全是用python对win32 api接口进行python api的转换,用起来比较复杂,对windows api及c sharp有一定了解,加上文档全但是基本就是原样包windows api的文档抄了一下,所以看起来是相当痛苦的。(但是实际上pywin32跟pyautogui的思路都是使用windows api获取窗体程序句柄进而实现自动化操控,从实现原理上看来,也注定这种方式是不可能完成过于复杂的UI自动化作业的。)

目标

使用pyautogui,实现自动化发送qq消息。

实现

安装三方python包,pyautogui

pip install pyautogui

引入包,进行自动化脚本编写 —— 相当简单易读,参考api文档

①打开对应的群聊天窗口,才能获取到句柄列表,设置发送使用ctrl+enter键(方便自动化控制)

python自动化UI工具发送QQ消息的实例

②编写代码

import pyautogui as gui
import time

print(gui.getWindows()) # getWindows获取所有活动窗体程序句柄对象的字典,key为窗体程序title,value为hwnd对象
gui.Window(gui.getWindows().get('Python数据分析交流群')).set_foreground() 
# Window使用hwnd对象创建window对象,对窗体程序进行控制
# 这一部分在提供的官方api文档里并没有提到,这是作者故意没有提及的窗体程序句柄处理,才对win api封装了几个功能
for i in range(10):
 gui.typewrite(time.asctime()+' : '+str(i)) # typewrite可以参考文档,实际是模拟键盘输入,所以当这里的内容换成中文时,是无效的
 gui.hotkey('ctrl','enter') # hotkey模拟组合键
 time.sleep(10)
 
 >>>> print内容
 {'': <ctypes.wintypes.LP_c_long object at 0x0000027E50544D48>, 'SelfProject [C:\\Users\\Stan Pao\\PycharmProjects\\SelfProject] -
 ...\\test2.py [SelfProject] - PyCharm': <ctypes.wintypes.LP_c_long object at 0x0000027E50544F48>, 'Python数据分析交流群': 
 <ctypes.wintypes.LP_c_long object at 0x0000027E505AB048>, '南京捷安特精英俱乐部': <ctypes.wintypes.LP_c_long object at 
 0x0000027E505AB0C8>, 'pyautogui - OneNote': <ctypes.wintypes.LP_c_long object at 0x0000027E505AB148>, '写文章-CSDN博客 -
 Google Chrome': <ctypes.wintypes.LP_c_long object at 0x0000027E505AB1C8>, 'Program Manager': <ctypes.wintypes.LP_c_long object at 
 0x0000027E505AB248>}

效果如下:还是很简单好用的~

python自动化UI工具发送QQ消息的实例

以上这篇python自动化UI工具发送QQ消息的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
分享一个简单的python读写文件脚本
Nov 25 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
Python smtplib实现发送邮件功能
May 22 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
python正则-re的用法详解
Jul 28 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
python实现扫雷游戏
Mar 03 Python
用Python生成HTML表格的方法示例
Mar 06 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 #Python
对Python获取屏幕截图的4种方法详解
Aug 27 #Python
python对常见数据类型的遍历解析
Aug 27 #Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 #Python
python实现一个函数版的名片管理系统过程解析
Aug 27 #Python
python中下标和切片的使用方法解析
Aug 27 #Python
python使用if语句实现一个猜拳游戏详解
Aug 27 #Python
You might like
PHP使用者状态管理功能的应用
2006/10/09 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
javascript 动态修改css样式方法汇总(四种方法)
2015/08/27 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
使用Python的PIL模块来进行图片对比
2016/02/18 Python
python中的字符串内部换行方法
2018/07/19 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
详解python持久化文件读写
2019/04/06 Python
Python笔记之facade模式
2019/11/20 Python
Python: 传递列表副本方式
2019/12/19 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
Python wordcloud库安装方法总结
2020/12/31 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
打架检讨书100字
2014/01/08 职场文书
事业单位鉴定材料
2014/05/25 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
个人先进事迹材料
2014/12/29 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android