自动发送微信

其实是想开发一个定时自动发送微信的脚本,来完成科室的一些工作。

利用Pyautogui实现微信自动发送

通过pyautogui模拟鼠标和键盘操作。

将微信app固定到任务栏上,鼠标移动到图标上,通过pyautogui.position()获取坐标。

有两种方式来启动微信:

  1. 一种是电脑长期挂着微信,获取任务栏微信坐标后后通过pyautogui.click()点击任务栏微信图标将窗口激活;
  2. 第二种是电脑上多次登陆微信后可以选择电脑登录微信后时不需要手机扫码,这个时候通过pyautogui.click()点击任务栏微信图标打开微信后,通过pyautogui.press('enter')直接登录。

定位联系人:

  1. 通过pyautogui.hotkey('ctrl', 'f')打开搜索框,然后通过pyautogui.write('联系人名')输入联系人名,然后通过pyautogui.press('enter')打开联系人。
  2. 此时光标会自动移动到消息输入框,通过pyautogui.write('消息内容')输入消息内容,然后通过pyautogui.press('enter')发送消息。

pyautogui好像无法直接发送中文,所以可以首先给联系人一个英语或拼音备注,或者通过pyperclip复制粘贴中文消息内容。

这个方法除了pyautogui.position()获取应用坐标的方式不够理想外,其他都比较简单易行。

利用UIAutomation实现微信自动发送

首先通过官方的inspect.exe或者Flauinspecthttps://github.com/FlaUI/FlaUInspect)获取微信窗口的句柄。然后通过Uiautomation库照导相应的元件对微信进行自动化操作。

在这之前,可以先通过Flauinspect定位任务栏上的微信程序,然后单击启动程序,然后通过Flauinspect获取启动后微信窗口的句柄来进行相应操作。

官方的inspect.exe在Windows SDK中,所以需要先安装Windows SDK。

如果使用Flauinspect,需要先安装chocolatey,然后通过choco install FlaUInspect安装Flauinspect。(个人版chocolatey安装方法:https://chocolatey.org/install#individual).

示例:

import uiautomation as auto
import time

## activate the wechat window
wechatWindow = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC')
wechatWindow.SetActive()

## search the contact
srch_btn = wechatWindow.EditControl(Name="搜索")
srch_btn.Click()
srch_btn.SendKeys("联系人名字")

## wait for the search reasult and then select the contact
time.sleep(1)
srch_btn.SendKeys("{ENTER}")

## send "test" message to the contact
sed_btn = wechatWindow.EditControl(Name="联系人名字")
sed_btn.Click()
sed_btn.SendKeys("test")
sed_btn.SendKeys("{ENTER}")

利用pywinauto实现微信自动发送(未测试)

记录这篇文章的时候,软件提示可以通过pywinauto库来实现微信自动化,以下为软件提示内容:

首先通过pywinauto库获取句柄对应的窗口对象。

然后通过pywinauto.controls.uia_controls.UIAutomation库来操作微信窗口。

没有对此进行测试,不过搜了下pywinauto的例子,貌似可以。