本示例是調(diào)用Windows API模擬發(fā)送,用Python調(diào)用win32api這個(gè)庫(kù)來調(diào)用Windows API模擬人的手動(dòng)操作來發(fā)送消息。
在使用前,請(qǐng)將你微信的窗口設(shè)置為在最前面,這樣就便于程序找到你的窗口!
私信小編01即可獲取大量Python學(xué)習(xí)資源

本示例是調(diào)用Windows API模擬發(fā)送,用Python調(diào)用win32api這個(gè)庫(kù)來調(diào)用Windows API模擬人的手動(dòng)操作來發(fā)送消息。 私信小編01即可獲取大量Python學(xué)習(xí)資源
在使用前,請(qǐng)將你微信的窗口設(shè)置為在最前面,這樣就便于程序找到你的窗口!
import pyautoguiimport timeimport win32apiimport win32conimport win32guiimport win32clipboard as w def FindWindow(chatroom): win = win32gui.FindWindow(None, chatroom) print("找到窗口句柄:%x" % win) if win != 0: win32gui.ShowWindow(win, win32con.SW_SHOWMINIMIZED) win32gui.ShowWindow(win, win32con.SW_SHOWNORMAL) win32gui.ShowWindow(win, win32con.SW_SHOW) win32gui.SetWindowPos(win, win32con.HWND_TOPMOST, 0, 0, 300, 500, win32con.SWP_SHOWWINDOW) win32gui.SetForegroundWindow(win) # 獲取控制 time.sleep(1) tit = win32gui.GetWindowText(win) print('已啟動(dòng)【'+str(tit)+'】窗口') else: print('找不到【%s】窗口' % chatroom) exit() # 設(shè)置和粘貼剪貼板def ClipboardText(ClipboardText): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_UNICODETEXT, ClipboardText) w.CloseClipboard() time.sleep(1) win32api.keybd_event(17,0,0,0) win32api.keybd_event(86,0,0,0) win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0) # 模擬發(fā)送動(dòng)作def SendMsg(): win32api.keybd_event(18, 0, 0, 0) win32api.keybd_event(83,0,0,0) win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0) win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0) # 模擬發(fā)送微信消息def SendWxMsg(wxid,sendtext): # 先啟動(dòng)微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索窗口 ClipboardText(wxid) time.sleep(1) # 進(jìn)入窗口 pyautogui.moveTo(155, 120) pyautogui.click() # 粘貼文本內(nèi)容 ClipboardText(sendtext) SendMsg() print('已發(fā)送') # 調(diào)用函數(shù)(微信號(hào)或微信昵稱或備注,需要發(fā)送的文本消息)SendWxMsg('face6009','Python發(fā)送微信消息')
動(dòng)圖演示
經(jīng)過學(xué)習(xí),我在想要不要用這個(gè)方法實(shí)現(xiàn)一套簡(jiǎn)單的微信操作腳本,然后寫成HttpApi,然后通過Http進(jìn)行調(diào)用,在網(wǎng)頁(yè)實(shí)現(xiàn)簡(jiǎn)單的遠(yuǎn)程控制微信,或者做個(gè)機(jī)器人等,都可以,但這個(gè)目前應(yīng)該還會(huì)有不少的問題,例如延遲,精準(zhǔn)度,這些都是一個(gè)問題,所以市面上沒有人做這類型的,目前我已經(jīng)實(shí)現(xiàn)了部分功能。
1、發(fā)送消息給好友
2、發(fā)送消息到微信群
3、邀請(qǐng)微信進(jìn)群
4、將微信移出群聊
5、發(fā)布群公告
6、轉(zhuǎn)發(fā)一篇圖文
2021-09-02新增發(fā)送文件和轉(zhuǎn)發(fā)群消息
import pyautoguiimport timeimport win32apiimport win32conimport win32guiimport win32clipboard as w def FindWindow(chatroom): win = win32gui.FindWindow(None, chatroom) print("找到窗口句柄:%x" % win) if win != 0: win32gui.ShowWindow(win, win32con.SW_SHOWMINIMIZED) win32gui.ShowWindow(win, win32con.SW_SHOWNORMAL) win32gui.ShowWindow(win, win32con.SW_SHOW) win32gui.SetWindowPos(win, win32con.HWND_TOP, 0, 0, 500, 700, win32con.SWP_SHOWWINDOW) win32gui.SetForegroundWindow(win) # 獲取控制 time.sleep(1) tit = win32gui.GetWindowText(win) print('已啟動(dòng)【'+str(tit)+'】窗口') else: print('找不到【%s】窗口' % chatroom) exit() # 設(shè)置和粘貼剪貼板def ClipboardText(ClipboardText): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_UNICODETEXT, ClipboardText) w.CloseClipboard() time.sleep(1) win32api.keybd_event(17,0,0,0) win32api.keybd_event(86,0,0,0) win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0) # 模擬發(fā)送動(dòng)作def SendMsg(): win32api.keybd_event(18, 0, 0, 0) win32api.keybd_event(83,0,0,0) win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0) win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0) # 模擬發(fā)送微信文本消息def SendWxMsg(wxid,sendtext): # 先啟動(dòng)微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索微信 ClipboardText(wxid) time.sleep(1) # 進(jìn)入聊天窗口 pyautogui.moveTo(155, 120) pyautogui.click() # 粘貼文本內(nèi)容 ClipboardText(sendtext) # 發(fā)送 SendMsg() print('已發(fā)送') # 關(guān)閉微信窗口 time.sleep(1) pyautogui.moveTo(683, 16) pyautogui.click() # 模擬發(fā)送文件消息(圖片、文檔、壓縮包等)def SendWxFileMsg(wxid,imgpath): # 先啟動(dòng)微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索微信 ClipboardText(wxid) time.sleep(1) # 進(jìn)入聊天窗口 pyautogui.moveTo(155, 120) pyautogui.click() # 選擇文件 pyautogui.moveTo(373, 570) pyautogui.click() ClipboardText(imgpath) time.sleep(1) pyautogui.moveTo(784, 509) pyautogui.click() # 發(fā)送 SendMsg() print('已發(fā)送') # 關(guān)閉微信窗口 time.sleep(1) pyautogui.moveTo(683, 16) pyautogui.click() # 轉(zhuǎn)發(fā)群里最新的一條消息def ZhuanfaMsg(wxid,groupname): # 先啟動(dòng)微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索群 ClipboardText(groupname) time.sleep(1) # 進(jìn)入群窗口 pyautogui.moveTo(155, 120) pyautogui.click() # 開始轉(zhuǎn)發(fā) pyautogui.moveTo(484, 439) time.sleep(1) pyautogui.rightClick() pyautogui.moveTo(543, 454) time.sleep(1) pyautogui.click() # 搜索用戶 ClipboardText(wxid) time.sleep(1) pyautogui.moveTo(828, 406) pyautogui.click() time.sleep(1) # 確定轉(zhuǎn)發(fā) pyautogui.moveTo(1108, 755) pyautogui.click() # 發(fā)送文本消息(微信號(hào)或微信昵稱或備注,需要發(fā)送的文本消息)SendWxMsg('sansure2016','Python發(fā)送微信消息') # 發(fā)送文件消息(圖片、文檔、壓縮包等)SendWxFileMsg('sansure2016',r"C:\Users\TANKING\Desktop\cbzqx77.jpg") # 轉(zhuǎn)發(fā)群里最新的一條消息(微信號(hào)或微信昵稱或備注,群名稱)ZhuanfaMsg('sansure2016','里客云科技')
聯(lián)系客服