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实现的百度站长自动URL提交小工具
Jun 27 Python
python中requests库session对象的妙用详解
Oct 30 Python
快速查询Python文档方法分享
Dec 27 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
使用python求解二次规划的问题
Feb 29 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 Python
Python数据结构之队列详解
Mar 21 Python
python APScheduler执行定时任务介绍
Apr 19 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代码优化及php相关问题总结
2006/10/09 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
用于table内容排序
2006/07/21 Javascript
jquery之Document元素选择器篇
2008/08/14 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
Python httplib模块使用实例
2015/04/11 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
Python打印不合法的文件名
2020/07/31 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
如何利用find命令查找文件
2016/11/18 面试题
师范生自荐信
2013/10/27 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
自强之星事迹材料
2014/05/12 职场文书
大学生在校表现评语
2014/12/31 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android