此示例是通过调用Windows API模拟传输、使用Python调用win32api的库以手动操作方式发送消息来调用Windows API模拟。
在使用前,请将你微信的窗口设置为在最前面,这样就便于程序找到你的窗口!
私信小编01即可获取大量Python学习资源
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_TOPMOST, 0, 0, 300, 500, win32con.SWP_SHOWWINDOW)
win32gui.SetForegroundWindow(win) # 获取控制
(1)
tit = win32gui.GetWindowText(win)
print('已启动【'+str(tit)+'】窗口')
else:
print('找不到【%s】窗口' % chatroom)
exit()
# 设置和粘贴剪贴板
def ClipboardText(ClipboardText):
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData, ClipboardText)
w.CloseClipboard()
(1)
win32a(17,0,0,0)
win32a(86,0,0,0)
win32a(86,0,win32con.KEYEVENTF_KEYUP,0)
win32a(17,0,win32con.KEYEVENTF_KEYUP,0)
# 模拟发送动作
def SendMsg():
win32a(18, 0, 0, 0)
win32a(83,0,0,0)
win32a(18,0,win32con.KEYEVENTF_KEYUP,0)
win32a(83,0,win32con.KEYEVENTF_KEYUP,0)
# 模拟发送微信消息
def SendWxMsg(wxid,sendtext):
# 先启动微信
FindWindow('微信')
(1)
# 定位到搜索框
(143, 39)
()
# 搜索窗口
ClipboardText(wxid)
(1)
# 进入窗口
(155, 120)
()
# 粘贴文本内容
ClipboardText(sendtext)
SendMsg()
print('已发送')
# 调用函数(微信号或微信昵称或备注,需要发送的文本消息)
SendWxMsg('face6009','Python发送微信消息')
动图演示
经过学习,我在想要不要用这个方法实现一套简单的微信操作脚本,然后写成HttpApi,然后通过Http进行调用,在网页实现简单的远程控制微信,或者做个机器人等,都可以,但这个目前应该还会有不少的问题,例如延迟,精准度,这些都是一个问题,所以市面上没有人做这类型的,目前我已经实现了部分功能。
1、发送消息给好友
2、发送消息到微信群
3、邀请微信进群
4、将微信移出群聊
5、发布群公告
6、转发一篇图文
2021-09-02新增发送文件和转发群消息
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) # 获取控制
(1)
tit = win32gui.GetWindowText(win)
print('已启动【'+str(tit)+'】窗口')
else:
print('找不到【%s】窗口' % chatroom)
exit()
# 设置和粘贴剪贴板
def ClipboardText(ClipboardText):
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData, ClipboardText)
w.CloseClipboard()
(1)
win32a(17,0,0,0)
win32a(86,0,0,0)
win32a(86,0,win32con.KEYEVENTF_KEYUP,0)
win32a(17,0,win32con.KEYEVENTF_KEYUP,0)
# 模拟发送动作
def SendMsg():
win32a(18, 0, 0, 0)
win32a(83,0,0,0)
win32a(18,0,win32con.KEYEVENTF_KEYUP,0)
win32a(83,0,win32con.KEYEVENTF_KEYUP,0)
# 模拟发送微信文本消息
def SendWxMsg(wxid,sendtext):
# 先启动微信
FindWindow('微信')
(1)
# 定位到搜索框
(143, 39)
()
# 搜索微信
ClipboardText(wxid)
(1)
# 进入聊天窗口
(155, 120)
()
# 粘贴文本内容
ClipboardText(sendtext)
# 发送
SendMsg()
print('已发送')
# 关闭微信窗口
(1)
(683, 16)
()
# 模拟发送文件消息(图片、文档、压缩包等)
def SendWxFileMsg(wxid,imgpath):
# 先启动微信
FindWindow('微信')
(1)
# 定位到搜索框
(143, 39)
()
# 搜索微信
ClipboardText(wxid)
(1)
# 进入聊天窗口
(155, 120)
()
# 选择文件
(373, 570)
()
ClipboardText(imgpath)
(1)
(784, 509)
()
# 发送
SendMsg()
print('已发送')
# 关闭微信窗口
(1)
(683, 16)
()
# 转发群里最新的一条消息
def ZhuanfaMsg(wxid,groupname):
# 先启动微信
FindWindow('微信')
(1)
# 定位到搜索框
(143, 39)
()
# 搜索群
ClipboardText(groupname)
(1)
# 进入群窗口
(155, 120)
()
# 开始转发
(484, 439)
(1)
()
(543, 454)
(1)
()
# 搜索用户
ClipboardText(wxid)
(1)
(828, 406)
()
(1)
# 确定转发
(1108, 755)
()
# 发送文本消息(微信号或微信昵称或备注,需要发送的文本消息)
SendWxMsg('sansure2016','Python发送微信消息')
# 发送文件消息(图片、文档、压缩包等)
SendWxFileMsg('sansure2016',r"C:UsersTANKINGDesktopcbzqx77.jpg")
# 转发群里最新的一条消息(微信号或微信昵称或备注,群名称)
ZhuanfaMsg('sansure2016','里客云科技')
1.文章《(如何微信发图排三排)微信朋友圈如何换图》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《(如何微信发图排三排)微信朋友圈如何换图》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好