吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2542|回复: 36
收起左侧

[Python 原创] pywin32库操作微信自动发送消息

  [复制链接]
Eks6666 发表于 2023-8-1 23:30
本帖最后由 Eks6666 于 2023-8-2 00:37 编辑

[Python] 纯文本查看 复制代码
import win32gui
import win32api
import win32con
import time
import win32clipboard
import pyperclip
import pyautogui

#打开微信程序
win32api.ShellExecute(0, 'open', r'D:\WeChat\WeChat.exe', '', '', 1)
#获取微信主窗口句柄
win = win32gui.FindWindow(None, '微信')
title=win32gui.GetWindowText(win)
print(f'找到{title}主窗口句柄:{win}')

#设置和粘贴剪贴板
def ClipboardText(aString):
        #设置剪贴板
        win32clipboard.OpenClipboard()
        win32clipboard.EmptyClipboard()
        win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, aString)
        win32clipboard.CloseClipboard()
        time.sleep(1)
        #将剪贴板文本进行粘贴
        win32api.keybd_event(win32con.VK_CONTROL,0,0,0)  #ctrl键位码是17
        win32api.keybd_event(ord('V'),0,0,0)  #v键位码是86
        win32api.keybd_event(win32con.VK_CONTROL,0,win32con.KEYEVENTF_KEYUP,0) #释放CTRL按键
        win32api.keybd_event(ord('V'),0,win32con.KEYEVENTF_KEYUP,0)#释放V键


#搜索微信好友或者微信群
def search(wxname):
        if win != 0:
                win32gui.SetForegroundWindow(win) # 获取控制     
                # 模拟按下Ctrl+F快捷键,ctrl+f搜索
                win32api.keybd_event(win32con.VK_CONTROL, 0, 0, 0)
                win32api.keybd_event(ord('F'), 0, 0, 0)
                win32api.keybd_event(ord('F'), 0, win32con.KEYEVENTF_KEYUP, 0)
                win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0)
                ClipboardText(wxname)
                time.sleep(1)
                # 模拟按下Enter键
                win32api.keybd_event(win32con.VK_RETURN, 0, 0, 0)
                win32api.keybd_event(win32con.VK_RETURN, 0, win32con.KEYEVENTF_KEYUP, 0)
        else:
                # 模拟按下Enter键
                print(f'请注意:找不到【{wxname}】这个人(或群)!')
                exit()

#模拟发送动作,alt+s键发送
def SendMsg():
        win32api.keybd_event(win32con.VK_MENU, 0, 0, 0) #Alt键位码18,win32con.VK_MENU键位码代表ALT键
        win32api.keybd_event(ord('S'),0,0,0) #s键位码83
        win32api.keybd_event(win32con.VK_MENU,0,win32con.KEYEVENTF_KEYUP,0) #释放ALT按键
        win32api.keybd_event(ord('S'),0,win32con.KEYEVENTF_KEYUP,0)#释放S按键

#发送文本
def sendText(chatrooms,text):
        for chatroom in chatrooms:
                search(chatroom)
                #文字首行留空,防止带表情复制不完全
                ClipboardText(" "+text)
                SendMsg()
                print(f'微信消息:{text} 已发送至:{chatroom}')


# 使用示例
chatrooms = ['大鹏@Java开发搭建交流群(禁广)', '文件传输助手']
text='世间文字八万个,唯有情字最杀人....'

sendText(chatrooms,text)


1690903686715.png

免费评分

参与人数 6吾爱币 +6 热心值 +6 收起 理由
Nwp + 1 + 1 我很赞同!
JiaXiaoShuai + 1 + 1 谢谢@Thanks!
ldm88 + 1 + 1 谢谢@Thanks!
13668377258 + 1 + 1 我很赞同!
BonnieRan + 1 + 1 我很赞同!
MywifeDouma + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

KirchoffNZ 发表于 2023-8-2 10:04
请问,这个是获取的微信api还是用的windows句柄来模拟鼠标键盘呢?
whz1998 发表于 2023-8-2 10:25
试了一下 好像只能发送到当前我微信打开的当前聊天页面,不能发送指定人
vethenc 发表于 2023-8-2 08:48
lushihao 发表于 2023-8-2 09:12
我还以为是微信call发消息呢
抱着丨枕头睡 发表于 2023-8-2 09:21
文件怎么发送??
lingwushexi 发表于 2023-8-2 09:23
感谢分享,非常实用
Broadm 发表于 2023-8-2 11:02
KirchoffNZ 发表于 2023-8-2 10:04
请问,这个是获取的微信api还是用的windows句柄来模拟鼠标键盘呢?

很明显是模拟按键
rwj1990 发表于 2023-8-2 11:03
用影刀5步之内  写完
watcherman 发表于 2023-8-2 11:13
要是多封装一些操作就好了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表