python操作微信自動(dòng)發(fā)消息的實(shí)現(xiàn)(微信聊天機(jī)器人)
前言
最近在學(xué)習(xí)python,發(fā)現(xiàn)一個(gè)微信自動(dòng)發(fā)消息的小demo感覺很有意思,試了一下,不成功,因?yàn)閐emo中用的是itchat這個(gè)庫來操作微信,而這個(gè)庫是通過微信網(wǎng)頁版來操作微信的,現(xiàn)在微信網(wǎng)頁版已經(jīng)不能登錄了所以失敗,我又試了第二種方法,我試圖找到微信界面上的搜索框控件,使用搜索框控件找到想法消息的人,然后發(fā)送消息,結(jié)果就是又失敗了,為啥呢?經(jīng)過我翻翻翻,找找找,發(fā)現(xiàn)微信的界面是使用duilib實(shí)現(xiàn)的,界面都是畫上去的,控件只是邏輯上存在,而實(shí)際沒有,我們根本獲取不到,然后我只能通過手動(dòng)移動(dòng)鼠標(biāo)的方式來實(shí)現(xiàn)了
1.打開微信,固定在左上角,這樣便于我們固定微信上各個(gè)控件所在坐標(biāo)
2.把鼠標(biāo)移動(dòng)到微信左邊的“通訊錄”按鈕上,單擊,打開通訊錄
3.把鼠標(biāo)移動(dòng)到搜索框把你要找的人的微信名復(fù)制進(jìn)去,回車,打開對(duì)話框(你要問我為什么要先打開通訊錄再去搜索框搜?問就是不知道,其實(shí)是經(jīng)過我的實(shí)驗(yàn)這樣比較穩(wěn)定,直接搜有bug,如果你能找到其他的解決辦法請(qǐng)告訴我,謝謝啦)
4.把你要發(fā)送的話復(fù)制到對(duì)話框,回車或者alt+s 發(fā)送
這就結(jié)束了,下面是部分代碼
import win32clipboard as wimport win32conimport win32apiimport win32guiimport time #把文字放入剪貼板def setText(aString): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_UNICODETEXT,aString) w.CloseClipboard() #模擬ctrl+Vdef ctrlV(): win32api.keybd_event(17,0,0,0) #ctrl win32api.keybd_event(86,0,0,0) #V win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0)#釋放按鍵 win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0) #模擬alt+sdef altS(): win32api.keybd_event(18,0,0,0) win32api.keybd_event(83,0,0,0) win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0) win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)# 模擬enterdef enter(): win32api.keybd_event(13,0,0,0) win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)#模擬單擊def click(): win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)#移動(dòng)鼠標(biāo)的位置def movePos(x,y): win32api.SetCursorPos((x,y)) if __name__=='__main__': #獲取鼠標(biāo)當(dāng)前位置 #hwnd=win32gui.FindWindow('MozillaWindowClass',None) hwnd = win32gui.FindWindow('WeChatMainWndForPC', None) win32gui.ShowWindow(hwnd,win32con.SW_SHOW) win32gui.MoveWindow(hwnd,0,0,1000,700,True) time.sleep(0.01) #1.移動(dòng)鼠標(biāo)到通訊錄位置,單擊打開通訊錄 movePos(28,147) click() #2.移動(dòng)鼠標(biāo)到搜索框,單擊,輸入要搜索的名字 movePos(148,35) click() setText(’胡歌’) ctrlV() time.sleep(1) #別問我為什么要停1秒,問就是給微信一個(gè)反應(yīng)的時(shí)間,他反應(yīng)慢反應(yīng)不過來,其他位置暫停的原因同樣 enter() time.sleep(1) #3.復(fù)制要發(fā)送的消息,發(fā)送 setText(’你好啊’) ctrlV() altS()
全部代碼我已經(jīng)放在了我的github上,歡迎下載https://github.com/p910/python
到此這篇關(guān)于python操作微信自動(dòng)發(fā)消息的實(shí)現(xiàn)(微信聊天機(jī)器人)的文章就介紹到這了,更多相關(guān)python操作微信自動(dòng)發(fā)消息 內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. IDEA中 Getter、Setter 注解不起作用的問題如何解決2. asp讀取xml文件和記數(shù)3. Android CountDownTimer案例總結(jié)4. CSS自定義滾動(dòng)條樣式案例詳解5. python利用opencv實(shí)現(xiàn)顏色檢測(cè)6. vue 驗(yàn)證兩次輸入的密碼是否一致的方法示例7. PHP實(shí)現(xiàn)基本留言板功能原理與步驟詳解8. 每日六道java新手入門面試題,通往自由的道路第二天9. Python 中如何使用 virtualenv 管理虛擬環(huán)境10. 簡體中文轉(zhuǎn)換為繁體中文的PHP函數(shù)
