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中的filter和lambda函数的使用
Apr 07 Python
详解Python中heapq模块的用法
Jun 28 Python
Python批量提取PDF文件中文本的脚本
Mar 14 Python
高效使用Python字典的清单
Apr 04 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
python使用多线程查询数据库的实现示例
Aug 17 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
Jan 24 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
PHP面向对象分析设计的经验原则
2008/09/20 PHP
php 猴子摘桃的算法
2017/06/20 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
Javascript JSQL,SQL无处不在,
2010/05/05 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
Javascript中神奇的this
2016/01/20 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
js操作二进制数据方法
2018/03/03 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
python计算auc指标实例
2017/07/13 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
一个入门级python爬虫教程详解
2021/01/27 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
《记承天寺夜游》教学反思
2014/02/16 职场文书
协议书与合同的区别
2014/04/18 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
2015年导购员工作总结
2015/04/25 职场文书
新学期开学标语2015
2015/07/16 职场文书
2015团员个人年度总结
2015/11/24 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书