×

python 微信 消息 助手 pywinauto

用Python操控微信发消息

鹭岛小千 鹭岛小千 发表于2021-08-22 22:08:05 浏览974 评论0

抢沙发发表评论

【问题描述】用Python如何操控微信发消息呢?

【小千解答】借助pywinauto库。

编写代码之前,要搞清楚微信的架构,包括窗口、控件等信息,可以使用以下工具:

  • Inspect v1.0.0.0:没下载到兼容Win10的版本,故在Win7环境下查看,可以显示微信图形界面的每一层结构

  • Microsoft Spy++ v10.00.30319:兼容Win10,只能看到微信的顶层窗口信息

  • ViewWizard v3.5.3:兼容Win10,只能看到微信的顶层窗口信息

查看效果:

34-1.png

34-2.png

34-3.png

34-4.png


代码如下:

from pywinauto.application import Application
from pywinauto.win32functions import SetFocus
from pywinauto import mouse
from pywinauto.keyboard import send_keys

wxapp = Application(backend='uia').connect(path='D:\Apps\WeChat\WeChat.exe')
try:
    wxwnd = wxapp.window(class_name='WeChatMainWndForPC')
    wxwnd.set_focus()   #窗口前置
except:
    send_keys('^%w')    #Ctrl+Alt+W,显示窗口并前置
    wxwnd = wxapp.window(class_name='WeChatMainWndForPC')
wxwnd.wait('ready')
btnchat = wxwnd.child_window(title='聊天',control_type='Button').rectangle()
pos = ((btnchat.left+btnchat.right)//2,(btnchat.top+btnchat.bottom)//2)
mouse.click(coords=pos)
elehelper = wxwnd.child_window(title='文件传输助手',control_type='ListItem').rectangle()
pos = ((elehelper.left+elehelper.right)//2,(elehelper.top+elehelper.bottom)//2)
mouse.click(coords=pos)
eleedit = wxwnd.child_window(title='输入',control_type='Edit')
eleedit.type_keys('xqoffice.cn')
send_keys('{ENTER}')


注:pywinauto库支持的【回车键】有3种写法:{ENTER}~、{VK_RETURN}。


打赏码.png


【附件】

Inspect1.0.0.0.rar


【参考资料】

  1. Windows自动化UIA

  2. Windows下UI自动化工具Inspect

  3. microsoft-Inspect

  4. pywinauto.readthedocs.io

  5. pywinauto使用文档

  6. pywinauto的学习记录

  7. 聊聊 PC 端自动化最佳方案 - Pywinauto


群贤毕至

访客