【uiautomation】pc微信公众号点击

使用Inspect.exe与UIAutomation操作微信公众号
一.inspect.exe安装
# 根据当前电脑版本找到相应合适的版本,并将inspect.exe所在的路径放到环境变量(sysdm.cpl)中
# 查看电脑系统详情信息 cmd > systeminfo
# 环境变量 cmd > sysdm.cpl > x64(具体要看windows操作系统位数)
https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/

在这里插入图片描述

二.inspect使用

在这里插入图片描述
控件类型(ControlType)以及对应的名称(Name)常用于定位
在这里插入图片描述

三. pc微信公众号点击

# -*- coding: utf-8 -*-
# @Time    : 2022/12/24 9:51
# @Author  : Cocktail_py

import uiautomation as auto

wx_window = auto.WindowControl(Name='微信', ClassName='WeChatMainWndForPC')

# 控制的应用窗口前置
wx_window.SetTopmost(True)
wx_window.ButtonControl(Name='通讯录').Click()
wx_window.ListControl(Name="联系人").ListItemControl(Name="新的朋友").Click()
wx_window.ListControl(Name="联系人").ListItemControl(Name="公众号").Click()
for c,d in auto.WalkControl(wx_window):
    if c.ControlType not in [auto.ControlType.ListItemControl]:
        continue
    text = c.Name
    if not text:
        continue
    # 过滤条件
    if text in ['新的朋友','公众号']:
        continue
    # 判断当前元素底部范围是否大于父元素底部范围
    if c.BoundingRectangle.bottom >wx_window.BoundingRectangle.bottom:
        auto.WheelDown(waitTime=0.01)
        auto.WheelDown(waitTime=2)
    print("当前点击>>{}".format(text))
    c.Click()

参考
https://blog.youkuaiyun.com/xiaoqiangclub/article/details/125536942
https://blog.youkuaiyun.com/as604049322/category_11396772.html

根据UIAutomation封装了很多自定义方法 现在只需要实例化之后 直接调用方法即可完成。比如单击某个按钮,现在只需要直接调用ClickElement,非常实用。 ClickElement 单击指定的自动化元素 DisselectAllDataGridRow 不选中所有行 DisselectDataGridRow 不选中特定的某一行 FocusWindow 获取窗口焦点 GetAllElement 获取指定父自动化元素下的所有激活的控件 GetAllElementDetails 获取指定自动化元素下的详细信息包括AutomationID,ControlType以及Name GetAllMenus 获取所有菜单项 GetAllSubMenus 获取某个菜单下的所有子菜单项 GetColumnsFromGridLine 获取指定行的所有列 GetColumnValuesFromGridLine 获取行的每一列数据 GetControlType(AutomationElement) 获取制动自动化元素的控件类型 GetControlType(TypeOfControl) 获取UIAutomation的控件类型 GetDocumentText 获取document控件的值 GetElementByID 获取父自动化元素下指定元素控件ID的引用 GetElementByName 获取父自动化元素下的指定子元素的引用 GetElementsByControlType 获取父自动化元素下的特定类型的所有自动化元素 GetGridLinesFromDataGrid 获取网格控件的全部行元素的引用 GetHeaderFromDataGrid 获取指定网格控件的标题栏引用 GetMenuBar 获取菜单栏控件 GetMenuByName 通过特定的名称去获取菜单UI自动化元素 GetName 获取指定自动化元素的名称 GetSubMenuByName 获取主菜单下的指定子菜单项的引用 GetValue 获取指定自动化元素的值 GetWindowByName(String) 获取desktop下的指定窗口名称的子UI自动化元素 GetWindowByName(String, AutomationElement) 获取特定父UI自动化元素下的制定窗口名称的子UI自动化元素 GetWindowList() 获取当前桌面根下所有的UI自动化元素下 GetWindowList(AutomationElement) 获取特定父UI自动化元素下的所有窗口的名称 RefindMainApplication 重新获取desktop下的指定窗口的自动化元素引用 SelectAllDataGridRow 选中所有行 SelectDataGridRow(AutomationElement) 选中特定的某一行 SelectDataGridRow(AutomationElement, Boolean) 将特定的DateGridRow加入选中项中 SelectValueInComboBox 从下拉框中选中指定值的项 SelectValueInListBox 从列表中选中指定值的项 SetValue 给予指定自动化元素赋值 以上的方法还不是很完善 正在完善中。如果有什么意见和建议,请发送邮件获取 chenxu7601257@qq.com 如果你看了这个帮助文件之后觉得有用的,请发邮件获取,我将把dll文件给你。谢谢。
### 使用 UIAutomation 提取或保存微信中的图片 为了从微信中提取或保存图片,可以利用 `uiautomation` 库来定位和操作微信窗口及其子控件。以下是具体方法: #### 定位微信窗口 首先需要找到微信主窗口,并确保其处于活动状态。 ```python import uiautomation as auto # 查找微信主窗口 wechat_window = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC') if not wechat_window.Exists(): raise Exception("未找到微信窗口") # 将微信窗口置于前台 wechat_window.SetTopmost(True) ``` #### 找到包含图片的消息区域 接着要识别出显示消息记录的容器,在该区域内查找含有图片的对象。 ```python message_area = wechat_window.ListControl(Name="消息") # 或者其他名称视版本而定 images = message_area.ImageControls() for img in images: print(f"Found image at {img.BoundingRectangle}") ``` #### 下载或保存图片 对于每一个发现的图像控件,可以通过模拟鼠标点击触发下载行为;如果希望直接获取二进制数据,则需进一步处理。 ```python from PIL import ImageGrab import os def save_image(image_control, path): rect = image_control.BoundingRectangle screenshot = ImageGrab.grab(bbox=(rect.left, rect.top, rect.right, rect.bottom)) screenshot.save(path) output_folder = "./weixin_images/" os.makedirs(output_folder, exist_ok=True) index = 0 for img in images: file_name = f"{output_folder}image_{index}.png" save_image(img, file_name) index += 1 ``` 上述过程展示了如何使用 Python 的 `uiautomation` 和第三方库如 Pillow 来抓取并存储来自微信客户端内的图片[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cocktail_py

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值