本示例是呼叫Windows API模擬發送,用Python呼叫win32api這個庫來呼叫Windows API模擬人的手動操作來發送訊息,
在使用前,請將你微信的視窗設定為在最前面,這樣就便于程式找到你的視窗!
很多人學習python,不知道從何學起, 很多人學習python,掌握了基本語法過后,不知道在哪里尋找案例上手, 很多已經做案例的人,卻不知道如何去學習更加高深的知識, 那么針對這三類人,我給大家提供一個好的學習平臺,免費領取視頻教程,電子書籍,以及課程的源代碼! QQ群:701698587 歡迎加入,一起討論 一起學習!
import pyautogui import time import win32api import win32con import win32gui import 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('已啟動【'+str(tit)+'】視窗') else: print('找不到【%s】視窗' % chatroom) exit() # 設定和粘貼剪貼板 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) # 模擬發送動作 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) # 模擬發送微信訊息 def SendWxMsg(wxid,sendtext): # 先啟動微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索視窗 ClipboardText(wxid) time.sleep(1) # 進入視窗 pyautogui.moveTo(155, 120) pyautogui.click() # 粘貼文本內容 ClipboardText(sendtext) SendMsg() print('已發送') # 呼叫函式(微信號或微信昵稱或備注,需要發送的文本訊息) SendWxMsg('face6009','Python發送微信訊息')
動圖演示
?經過學習,我在想要不要用這個方法實作一套簡單的微信操作腳本,然后寫成HttpApi,然后通過Http進行呼叫,在網頁實作簡單的遠程控制微信,或者做個機器人等,都可以,但這個目前應該還會有不少的問題,例如延遲,精準度,這些都是一個問題,所以市面上沒有人做這型別的,目前我已經實作了部分功能,
1、發送訊息給好友
2、發送訊息到微信群
3、邀請微信進群
4、將微信移出群聊
5、發布群公告
6、轉發一篇圖文
2021-09-02新增發送檔案和轉發群訊息
import pyautogui import time import win32api import win32con import win32gui import 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('已啟動【'+str(tit)+'】視窗') else: print('找不到【%s】視窗' % chatroom) exit() # 設定和粘貼剪貼板 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) # 模擬發送動作 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) # 模擬發送微信文本訊息 def SendWxMsg(wxid,sendtext): # 先啟動微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索微信 ClipboardText(wxid) time.sleep(1) # 進入聊天視窗 pyautogui.moveTo(155, 120) pyautogui.click() # 粘貼文本內容 ClipboardText(sendtext) # 發送 SendMsg() print('已發送') # 關閉微信視窗 time.sleep(1) pyautogui.moveTo(683, 16) pyautogui.click() # 模擬發送檔案訊息(圖片、檔案、壓縮包等) def SendWxFileMsg(wxid,imgpath): # 先啟動微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索微信 ClipboardText(wxid) time.sleep(1) # 進入聊天視窗 pyautogui.moveTo(155, 120) pyautogui.click() # 選擇檔案 pyautogui.moveTo(373, 570) pyautogui.click() ClipboardText(imgpath) time.sleep(1) pyautogui.moveTo(784, 509) pyautogui.click() # 發送 SendMsg() print('已發送') # 關閉微信視窗 time.sleep(1) pyautogui.moveTo(683, 16) pyautogui.click() # 轉發群里最新的一條訊息 def ZhuanfaMsg(wxid,groupname): # 先啟動微信 FindWindow('微信') time.sleep(1) # 定位到搜索框 pyautogui.moveTo(143, 39) pyautogui.click() # 搜索群 ClipboardText(groupname) time.sleep(1) # 進入群視窗 pyautogui.moveTo(155, 120) pyautogui.click() # 開始轉發 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) # 確定轉發 pyautogui.moveTo(1108, 755) pyautogui.click() # 發送文本訊息(微信號或微信昵稱或備注,需要發送的文本訊息) SendWxMsg('sansure2016','Python發送微信訊息') # 發送檔案訊息(圖片、檔案、壓縮包等) SendWxFileMsg('sansure2016',r"C:\Users\TANKING\Desktop\cbzqx77.jpg") # 轉發群里最新的一條訊息(微信號或微信昵稱或備注,群名稱) ZhuanfaMsg('sansure2016','里客云科技')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/333238.html
標籤:Python
