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实现simhash算法实例
Apr 25 Python
详解使用Python处理文件目录的相关方法
Oct 16 Python
python制作最美应用的爬虫
Oct 28 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
python字典一键多值实例代码分享
Jun 14 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
Python如何实现爬取B站视频
May 20 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
动态读取JSON解析键值对的方法
2014/06/03 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
进一步理解Python中的函数编程
2015/04/13 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
深入浅出学习python装饰器
2017/09/29 Python
Python编程pygal绘图实例之XY线
2017/12/09 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
升职自荐信
2013/11/28 职场文书
委托证明的格式
2014/01/10 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
创先争优承诺书范文
2014/03/31 职场文书
股东授权委托书范本
2014/09/13 职场文书
机关保密工作承诺书
2015/05/04 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL