本示例是調用Windows API模拟發送,用Python調用win32api這個庫來調用Windows API模拟人的手動操作來發送消息。在使用前,請将你微信的窗口設置為在最前面,這樣就便于程序找到你的窗口!
私信小編01即可獲取大量Python學習資源
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','裡客雲科技')
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!