这个例子是调用Windows API模拟发送,用Python调用win32api这个库来调用Windows API模拟人类手动操作发送消息。
在使用之前,请将您的微信的窗口设置在最前面,以便程序可以轻松找到您的窗口!
私人边肖01可以获得很多Python学习资源。

import pyautogui
import time
import win32 API
import win32 con
import win32 GUI
import win32 clipboard as w
def FindWindow(chat room):
win = win32 GUI。FindWindow(无,聊天室)
print(& # 34;找到的窗口句柄:% x & # 34% win)
if win!= 0:
win32gui。ShowWindow(win,win32con。SW_SHOWMINIMIZED)
win32gui。ShowWindow(win,win32con。SW_SHOWNORMAL)
win32gui。ShowWindow(win,win32con。SW_SHOW)
win32gui。SetWindowPos(win,win32con。HWND_TOPMOST,0,0,300,500,win 32 con . SWP _ show window)
win 32 GUI . setforegroundwindow(win)# Get control
time . sleep(1)
Tit = win 32 GUI . getwindowtext(win)
print(& # 39;开始[& # 39;+str(tit)+& # 39;】窗口& # 39;)
else:
print(& # 39;[%s]窗口& # 39;%聊天室)
exit ()
#设置并粘贴剪贴板
def剪贴板文本(剪贴板文本):
W .打开剪贴板()
W .清空剪贴板()[/h w.SetClipboardData(win32con .CF_UNICODETEXT,clipboard text)
w . close clipboard()
time . sleep(1)
win32 API . keybd _ event(17,0,0,0)
win32api.keybd_event(86,0,0,0)
win32api.keybd_event(86,0,win32con。KEYEVENTF_KEYUP,0)
win32api.keybd_event(17,0,Win32 con.keyevent f _ keyup,0)
defsendmsg():
Win32 API . keybd _ event(18,0,0,0)
Win32 API . keybd _ 0)
Win32 API . keybd _ event(18,0,win33KEYEVENTF_KEYUP,0)
win32api.keybd_event(83,0,win32con。KEYEVENTF_KEYUP,0)
#模拟发送微信消息
def sendwxmsg (wxid,sendtext):
#启动微信[/h
FindWindow(& # 39 first(& # 39;微信& # 39;)
time.sleep(1)
#导航到搜索框
pyautogui.moveTo(143,39)
pyautogui . click()
#搜索窗口
剪贴板文本(wxid)
time.sleep (1)
#进入窗口
pyautogui . move to(155 20)
pyautogui . click()
。发了& # 39;)
#调用函数(微信号或微信昵称或备注,要发送的短信)
SendWxMsg(& # 39;face6009 & # 39,'发送Python微信消息& # 39;)
动画演示
学完之后,我就在想是不是用这个方法实现一个简单的微信操作脚本,然后写成HttpApi,再通过Http调用,在网页上实现对微信的简单远程控制,或者做一个机器人等等。,但是目前应该还是有很多问题的,比如延迟,精度,都是问题,所以市面上没有人做这个类型,目前我已经实现了部分功能。
1.向朋友发送消息
2。发消息到微信群
3。邀请微信入群
4。把微信移出群聊
5。发布群公告
6。转发一张图片
import pyautogui import time import win32api import win32con import win32gui import win32clipboard as w def FindWindow(chatroom): win = win32gui.FindWindow(None, chatroom) print("找到窗口句柄:%x" % win) if win != 0: win32gui.ShowWindow(win, win32con.SW_SHOWMINIMIZED) win32gui.ShowWindow(win, win32con.SW_SHOWNORMAL) win32gui.ShowWindow(win, win32con.SW_SHOW) win32gui.SetWindowPos(win, win32con.HWND_TOP, 0, 0, 500, 700, win32con.SWP_SHOWWINDOW) win32gui.SetForegroundWindow(win) # 获取控制 time.sleep(1) tit = win32gui.GetWindowText(win) print('已启动【'+str(tit)+'】窗口') else: print('找不到【%s】窗口' % chatroom) exit() # 设置和粘贴剪贴板 def ClipboardText(ClipboardText): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_UNICODETEXT, ClipboardText) w.CloseClipboard() time.sleep(1) win32api.keybd_event(17,0,0,0) win32api.keybd_event(86,0,0,0) win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0) # 模拟发送动作 def SendMsg(): win32api.keybd_event(18, 0, 0, 0) win32api.keybd_event(83,0,0,0) win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0) win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0) # 模拟发送微信文本消息 def SendWxMsg(wxid,sendtext): # 先启动微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索微信 ClipboardText(wxid) time.sleep(1) # 进入聊天窗口 pyautogui.moveTo(155, 120) pyautogui.click() # 粘贴文本内容 ClipboardText(sendtext) # 发送 SendMsg() print('已发送') # 关闭微信窗口 time.sleep(1) pyautogui.moveTo(683, 16) pyautogui.click() # 模拟发送文件消息(图片、文档、压缩包等) def SendWxFileMsg(wxid,imgpath): # 先启动微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索微信 ClipboardText(wxid) time.sleep(1) # 进入聊天窗口 pyautogui.moveTo(155, 120) pyautogui.click() # 选择文件 pyautogui.moveTo(373, 570) pyautogui.click() ClipboardText(imgpath) time.sleep(1) pyautogui.moveTo(784, 509) pyautogui.click() # 发送 SendMsg() print('已发送') # 关闭微信窗口 time.sleep(1) pyautogui.moveTo(683, 16) pyautogui.click() # 转发群里最新的一条消息 def ZhuanfaMsg(wxid,groupname): # 先启动微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索群 ClipboardText(groupname) time.sleep(1) # 进入群窗口 pyautogui.moveTo(155, 120) pyautogui.click() # 开始转发 pyautogui.moveTo(484, 439) time.sleep(1) pyautogui.rightClick() pyautogui.moveTo(543, 454) time.sleep(1) pyautogui.click() # 搜索用户 ClipboardText(wxid) time.sleep(1) pyautogui.moveTo(828, 406) pyautogui.click() time.sleep(1) # 确定转发 pyautogui.moveTo(1108, 755) pyautogui.click() # 发送文本消息(微信号或微信昵称或备注,需要发送的文本消息) SendWxMsg('sansure2016','Python发送微信消息') # 发送文件消息(图片、文档、压缩包等) SendWxFileMsg('sansure2016',r"C:UsersTANKINGDesktopcbzqx77.jpg") # 转发群里最新的一条消息(微信号或微信昵称或备注,群名称) ZhuanfaMsg('sansure2016','里客云科技')








