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 相关文章推荐
Sublime开发python程序的示例代码
Jan 24 Python
pandas修改DataFrame列名的方法
Apr 08 Python
python 请求服务器的实现代码(http请求和https请求)
May 25 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
python读取Excel表格文件的方法
Sep 02 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
Python中实现输入一个整数的案例
May 03 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
详解python的super()的作用和原理
Oct 29 Python
python单元测试之pytest的使用
Jun 07 Python
教你怎么用Python实现GIF动图的提取及合成
Jun 15 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
Angular2 http jsonp的实例详解
2017/08/31 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python 不以科学计数法输出的方法
2018/07/16 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
租赁协议书范本
2014/04/22 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
创业计划书之酒店
2019/08/30 职场文书
CSS3常见动画的实现方式
2021/04/14 HTML / CSS
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android
Django框架中表单的用法
2022/06/10 Python