Open DreammakerXT opened 1 year ago
wxauto.py 修改第一处: def init(self): self.UiaAPI = uia.WindowControl(ClassName='WeChatMainWndForPC') self.SessionList = self.UiaAPI.ListControl(Name='会话')
self.SearchBox = self.UiaAPI.EditControl(Name='搜索')
self.MsgList = self.UiaAPI.ListControl(Name='消息')
self.SessionItemList = []
修改第二处: def SendMsg(self, msg, window_title, clear=True): '''向当前窗口发送消息 msg : 要发送的消息 clear : 是否清除当前已编辑内容 ''' self.UiaAPI.SwitchToThisWindow() EditMsg = self.UiaAPI.EditControl(Name=f'{window_title}') if clear: EditMsg.SendKeys('{Ctrl}a', waitTime=0) EditMsg.SendKeys(msg, waitTime=0) EditMsg.SendKeys('{Enter}', waitTime=0) 修改第三处: def SendFiles(self, *filepath, window_title, not_exists='ignore'): 。。。 if not key: return 0 if not COPYDICT: EditMsg = self.UiaAPI.EditControl(Name=f'{window_title}') EditMsg.SendKeys(' ', waitTime=0) EditMsg.SendKeys('{Ctrl}a', waitTime=0) EditMsg.SendKeys('{Ctrl}c', waitTime=0) EditMsg.SendKeys('{Delete}', waitTime=0) 。。。 自身调用时修改如下: wx = WeChat() wx.sendMsg("xxx")-->wx.sendMsg("xxx", "所要输入内容的窗口的名字(即群或者个人名)") sendFile一样修改
DreammakerXT
感谢 看明白了。OK
循环发送多个对象时还是会报错
wxauto.py 修改第一处: def init(self): self.UiaAPI = uia.WindowControl(ClassName='WeChatMainWndForPC') self.SessionList = self.UiaAPI.ListControl(Name='会话') # self.EditMsg = self.UiaAPI.EditControl(Name='输入') self.SearchBox = self.UiaAPI.EditControl(Name='搜索') self.MsgList = self.UiaAPI.ListControl(Name='消息') self.SessionItemList = [] 修改第二处: def SendMsg(self, msg, window_title, clear=True): '''向当前窗口发送消息 msg : 要发送的消息 clear : 是否清除当前已编辑内容 ''' self.UiaAPI.SwitchToThisWindow() EditMsg = self.UiaAPI.EditControl(Name=f'{window_title}') if clear: EditMsg.SendKeys('{Ctrl}a', waitTime=0) EditMsg.SendKeys(msg, waitTime=0) EditMsg.SendKeys('{Enter}', waitTime=0) 修改第三处: def SendFiles(self, *filepath, window_title, not_exists='ignore'): 。。。 if not key: return 0 if not COPYDICT: EditMsg = self.UiaAPI.EditControl(Name=f'{window_title}') EditMsg.SendKeys(' ', waitTime=0) EditMsg.SendKeys('{Ctrl}a', waitTime=0) EditMsg.SendKeys('{Ctrl}c', waitTime=0) EditMsg.SendKeys('{Delete}', waitTime=0) 。。。 自身调用时修改如下: wx = WeChat() wx.sendMsg("xxx")-->wx.sendMsg("xxx", "所要输入内容的窗口的名字(即群或者个人名)") sendFile一样修改
自身调用时,who = ‘文件传输助手’ wx.ChatWith(who) wx.SendMsg('xxx',who)
wxauto.py 修改第四处: def SendClipboard(self,window_title): '''向当前聊天页面发送剪贴板复制的内容''' self.SendMsg('{Ctrl}v',window_title) 自身调用时:who = '文件传输助手' wx.SendClipboard(who)
修改第三处中:
257行 self.SendClipboard()
改为 self.SendClipboard(window_title)
调用 SendFiles('xxx',who) 出现报错
TypeError: SendFiles() missing 1 required keyword-only argument: 'window_title'
解决方法
修改方法 def SendFiles(self, window_title, *filepath, not_exists='ignore'):
调用变为 who = ‘文件传输助手’ wx.ChatWith(who) wx.SendFiles(who,'xxx')
微信最新版本3.9.6.33发送消息不了
我是微信3.9.5版本的,只修改了一条好像也能用了 。 self.EditMsg = self.UiaAPI.EditControl(LocalizedControlType='编辑') 位置如下:
class WeChat:
def __init__(self):
self.UiaAPI = uia.WindowControl(ClassName='WeChatMainWndForPC')
self.SessionList = self.UiaAPI.ListControl(Name='会话')
# self.EditMsg = self.UiaAPI.EditControl(Name='输入') #这是原来的
self.EditMsg = self.UiaAPI.EditControl(LocalizedControlType='编辑') #这是新加的
self.SearchBox = self.UiaAPI.EditControl(Name='搜索')
self.MsgList = self.UiaAPI.ListControl(Name='消息')
self.SessionItemList = []
试下新版本,可下载图片,适用于最新的PC微信3.9.8.15,重写了wxauto,欢迎指出bug
感谢,我也是这个报错。
定义在类WeChat()中的self.EditMsg = self.UiaAPI.EditControl(Name='输入')不再固定,会随着不同聊天窗口的窗口名而变化,涉及到sendMsg和sendFile两个方法,需要在使用时传入窗口参数,已测试。