WeChat mass msg
原始版本
微信群发消息,Windows系统客户端(PC端
gui
使用了 pyside6
WeChat
的模块是 uiautomation
主页面
关于页面
唤醒WeChat
由快捷键更改为Windows
系统层面唤醒微信窗口
def __wake_up_window():
"""唤醒微信窗口"""
hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')
# 展示窗口
win32gui.SetForegroundWindow(hwnd)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWDEFAULT)
完善在没有100%匹配好友昵称时候,获取当前面板的昵称做匹配
# 获取到真实的昵称(获取当前面板的备注名称), 有时候输入不全, 可以搜索到,但输入内容时候会报错
def __get_current_panel_nickname(self) -> str:
"""获取当前面板的好友昵称"""
for idx in range(1, 10):
current_panel_nickname = self.wx_window.TextControl(foundIndex=idx).Name
if current_panel_nickname:
return current_panel_nickname
发送消息时,如果当前面板的好友昵称与需发送的好友昵称一直,则无需再次搜索跳转到好友面板
if self.__get_current_panel_nickname() != name:
self.__goto_chat_box(name=name)
工具启动时,WeChat
和工具都会置顶,工具关闭时 WeChat
最小化。
keyboard
键盘监听模块,按下快捷键 Ctrl+Alt+Q
进行隐藏或展示工具
import keyboard
keyboard.add_hotkey('Ctrl+Alt+Q', window.restore_from_tray)
Esc
和 Ctrl+Alt+Q
都可以进行最小化到任务栏。
def listen_keyboard(self):
# 键盘监听
shortcut = QShortcut(QKeySequence("Esc"), self)
# 当按下 Esc 键时隐藏窗口
shortcut.activated.connect(self.restore_from_tray)
psutil
import psutil
def get_specific_process(proc_name: str = 'WeChat.exe') -> bool:
"""获取指定进程是否存在"""
return any(proc.name() == proc_name for proc in psutil.process_iter(attrs=['name']))
pip install -r requirements.txt
pyinstaller -F -w --icon=resources/icon/icon.ico main.py
不要做坏事,不要做坏事,不要做坏事!!!(不过看起来也做不了坏事
GUI
,提上议程-2024-03-18ThreadPool
+ QRunnable
,工具不会卡顿GUI
的代码,当前的 MVC架构
不够合理直接运行 main.py
操作WeChat的代码
在发送消息 send_msg 函数中,无论是发送单条还是多条,都需要传入可迭代对象(eg:list(), tuple()...
可以同时发送文本 和 文件,但不可同时都不发送!至少发送其中一种。
# 实例化WxOperation类
wx = WxOperation()
# 发送文本
wx.send_msg('好友名称', msgs=['hello', 'world'])
# 发送文件
wx.send_msg('好友名称', file_paths=['README.md', 'wx_operation.py'])
# 发送文本和文件
wx.send_msg('好友名称', msgs=['hello', 'world'], file_paths=['README.md', 'wx_operation.py'])
# 批量发送
wx.send_msg(*['好友1','好友2'...], msgs=['hello', 'world'], file_paths=['README.md', 'wx_operation.py'])
# 获取微信好友
wx.get_friend_list() # 获取全部好友
wx.get_friend_list(tag='你的标签') # 获取指定标签好友
其他的自己去翻一翻代码吧,除去注释都不到100行代码。
帮助我们处理群发消息的繁琐,解放双手(免责声明,本代码仅用于学习,下载后请勿用于商业用途)