python操作微信自動發(fā)消息的實(shí)現(xiàn)(微信聊天機(jī)器人)
前言
最近在學(xué)習(xí)python,發(fā)現(xiàn)一個微信自動發(fā)消息的小demo感覺很有意思,試了一下,不成功,因?yàn)閐emo中用的是itchat這個庫來操作微信,而這個庫是通過微信網(wǎng)頁版來操作微信的,現(xiàn)在微信網(wǎng)頁版已經(jīng)不能登錄了所以失敗,我又試了第二種方法,我試圖找到微信界面上的搜索框控件,使用搜索框控件找到想法消息的人,然后發(fā)送消息,結(jié)果就是又失敗了,為啥呢?經(jīng)過我翻翻翻,找找找,發(fā)現(xiàn)微信的界面是使用duilib實(shí)現(xiàn)的,界面都是畫上去的,控件只是邏輯上存在,而實(shí)際沒有,我們根本獲取不到,然后我只能通過手動移動鼠標(biāo)的方式來實(shí)現(xiàn)了
1.打開微信,固定在左上角,這樣便于我們固定微信上各個控件所在坐標(biāo)
2.把鼠標(biāo)移動到微信左邊的“通訊錄”按鈕上,單擊,打開通訊錄
3.把鼠標(biāo)移動到搜索框把你要找的人的微信名復(fù)制進(jìn)去,回車,打開對話框(你要問我為什么要先打開通訊錄再去搜索框搜?問就是不知道,其實(shí)是經(jīng)過我的實(shí)驗(yàn)這樣比較穩(wěn)定,直接搜有bug,如果你能找到其他的解決辦法請告訴我,謝謝啦)
4.把你要發(fā)送的話復(fù)制到對話框,回車或者alt+s 發(fā)送
這就結(jié)束了,下面是部分代碼
import win32clipboard as w import win32con import win32api import win32gui import time #把文字放入剪貼板 def setText(aString): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_UNICODETEXT,aString) w.CloseClipboard() #模擬ctrl+V def 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+s def 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) # 模擬enter def 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) #移動鼠標(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.移動鼠標(biāo)到通訊錄位置,單擊打開通訊錄 movePos(28,147) click() #2.移動鼠標(biāo)到搜索框,單擊,輸入要搜索的名字 movePos(148,35) click() setText('胡歌') ctrlV() time.sleep(1) #別問我為什么要停1秒,問就是給微信一個反應(yīng)的時間,他反應(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操作微信自動發(fā)消息的實(shí)現(xiàn)(微信聊天機(jī)器人)的文章就介紹到這了,更多相關(guān)python操作微信自動發(fā)消息 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python文件選擇對話框的操作方法
- Python 使用PyQt5 完成選擇文件或目錄的對話框方法
- Python wxPython庫消息對話框MessageDialog用法示例
- Python PyQt5標(biāo)準(zhǔn)對話框用法示例
- python3+PyQt5+Qt Designer實(shí)現(xiàn)擴(kuò)展對話框
- python GUI庫圖形界面開發(fā)之PyQt5打開保存對話框QFileDialog詳細(xì)使用方法與實(shí)例
- python的tkinter布局之簡單的聊天窗口實(shí)現(xiàn)方法
- 教你用Python創(chuàng)建微信聊天機(jī)器人
- 基于Python如何使用AIML搭建聊天機(jī)器人
- python實(shí)現(xiàn)簡易聊天對話框
相關(guān)文章
使用Python合并Excel文件中的多個Sheet的實(shí)現(xiàn)過程
在Python中,可以使用pandas庫來處理Excel文件,將多個工作表(sheets)合并為一個工作表,以下是一個詳細(xì)的代碼示例,展示了如何實(shí)現(xiàn)這一功能,文中有相關(guān)的代碼供大家參考,需要的朋友可以參考下2024-10-10selenium與xpath之獲取指定位置的元素的實(shí)現(xiàn)
這篇文章主要介紹了selenium與xpath之獲取指定位置的元素的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01python使用in操作符時元組和數(shù)組的區(qū)別分析
有時候要判斷一個數(shù)是否在一個序列里面,這時就會用到in運(yùn)算符來判斷成員資格,如果條件為真時,就會返回true,條件為假時,返回一個flase。這樣的運(yùn)算符叫做布爾運(yùn)算符,其真值叫做布爾值。2015-05-05Swin?Transformer圖像處理深度學(xué)習(xí)模型
這篇文章主要為大家介紹了Swin?Transformer圖像處理深度學(xué)習(xí)模型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03python實(shí)現(xiàn)時間序列自相關(guān)圖(acf)、偏自相關(guān)圖(pacf)教程
這篇文章主要介紹了python實(shí)現(xiàn)時間序列自相關(guān)圖(acf)、偏自相關(guān)圖(pacf)教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06python中的logging模塊的簡單應(yīng)用和高級使用
在?Python?中,可以使用內(nèi)置的?logging?模塊來記錄應(yīng)用程序的信息,logging?模塊還提供了一些高級功能,如日志回溯、日志輪換、日志緩沖等,需要的朋友可以參考下2023-04-04詳解Python用三種方式統(tǒng)計(jì)詞頻的方法
這篇文章主要介紹了Python用三種方式統(tǒng)計(jì)詞頻,每種方法給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-07-07