日常生活或者工作中,有时候我们会希望通过微信来发送即时消息,随时提醒我们重要的事件,但是,微信是不提供个人接口的。虽然可以使用itchat,公众号等方法变通,但是,itchat需要通过扫码登录,现在微信对第三方平台登录控制比较严,存在账号被封的风险。那么,我们怎么样通过微信电脑版来解决这个问题呢?其实很简单,这里我介绍通过模拟按键的方式来实现相应的功能,这样只要在电脑上登录了微信pc版,就可以随时发送消息。
操作思路:
1、发送文字
把文字放到剪切板--->给微信发送ctrl+v组合键-->给微信发送alt+s组合键触发发送按钮,这样文字就发送出去了
2、发送图片
和发送文字一样,就是图片需要处理成bmp格式,并且需要把数据特殊处理一下。
下面我们看具体实现:
把文字放到剪切板:
def setText(aString):
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, aString)
w.CloseClipboard()
把图片放到剪切板:
def setImage(data): # 写入剪切板
w.OpenClipboard()
try:
# Unicode tests
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_DIB, data)
except:
traceback.print_exc()
finally:
w.CloseClipboard()
模拟ctrl+v
def ctrlV():
win32api.keybd_event(17,0,0,0) #ctrl键位码是17
win32api.keybd_event(86,0,0,0) #v键位码是86
win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
模拟alt+s
def altS():
win32api.keybd_event(18, 0, 0, 0) #Alt
win32api.keybd_event(83,0,0,0) #s
win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)
剩下的就很简单了,通过win32gui.FindWindow找到微信的句柄,然后把焦点放到搜索框,输入内容,再模拟点击找到的人,再调用上面几个函数,就可以达到发送图片或者文字的效果了。
比如:
setText('123455')
hwnd = win32gui.FindWindow(None, "微信")
ctrlV()
altS()
重要提醒:
微信pc端的输入框都没有句柄,所以需要通过模拟点击来获得蕉点。