日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

使用Python实现微信发送文本消息、图片以及附件

發布時間:2024/1/8 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Python实现微信发送文本消息、图片以及附件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用Python實現微信發送文本消息、圖片以及附件

因為目前很多微信賬號已經不支持網頁版的操作了,因此無法使用之前的itchat這一類對微信進行操作。
為此,選擇對微信PC端進行開發。
選擇的方式比較笨拙,主要是通過windows的剪切板和通過位置定位模擬各種操作來實現的。
針對文本格式,比較簡單,只需要直接調用剪貼板即可。

def setText(aString):w.OpenClipboard()w.EmptyClipboard()w.SetClipboardData(win32con.CF_UNICODETEXT, aString)w.CloseClipboard()

win32con.CF_UNICODETEXT表示采用文本的方式寫入數據,可以避免中文亂碼。

對于圖片格式的,因為剪切板的特性,需要將圖片保存成流的形式,然后進行寫入的操作。

def setImage(pathfile):img = Image.open(pathfile)output = BytesIO() argument expected, got 'bytes'img.convert("RGB").save(output, "BMP") # 以BMP格式保存流data = output.getvalue()[14:] # bmp文件頭14個字節丟棄output.close()w.OpenClipboard()w.EmptyClipboard()w.SetClipboardData(win32con.CF_ENHMETAFILE, data)w.CloseClipboard()

針對附件,實現起來比較困難,選擇通過PyQt5來輔助實現。

def setFile(pathfile):app = QtWidgets.QApplication([])data = QtCore.QMimeData()url = QtCore.QUrl.fromLocalFile(pathfile)data.setUrls([url])app.clipboard().setMimeData(data)clipboard = QtWidgets.QApplication.clipboard()

在實現數據存入剪切板后,需要進行微信的模擬操作。
模擬移動鼠標的操作、單擊操作、回車操作、復制操作和發送操作。

#模擬鼠標移動 def movePos(x, y):win32api.SetCursorPos((x, y))# 模擬單擊 def click():win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)# 模擬回車 def enter():win32api.keybd_event(13, 0, 0, 0)win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)# 模擬復制操作 def ctrlV():win32api.keybd_event(17, 0, 0, 0) # ctrlwin32api.keybd_event(86, 0, 0, 0) # Vwin32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0) # 釋放按鍵win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)#模擬發送快捷鍵 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)

最后,通過調用上述函數,實現微信發送的功能。
mes是發送的內容。如果是文本類型,就直接將消息寫入;如果是圖片類型或者附件,則寫入的是對應文件的路徑,絕對路徑和相對路徑均可,建議寫成絕對路徑。
senders是要發送的人,可以選擇批量發送給多個人或者群。
types是要發送的內容的類型。如果是文本格式,則置為1;如果是圖片格式,則置為2;如果是附件格式,則置為3.

def SendWeChat(mes,senders,types):hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")if not hwnd:return Falsehwnd_fore = win32gui.GetForegroundWindow()#將窗體置為最前if hwnd!=hwnd_fore:win32gui.SetForegroundWindow(hwnd)time.sleep(2)win_hd=win32gui.GetForegroundWindow()#將窗體放在左上角win32gui.MoveWindow(hwnd, 0, 0, 1000, 700, True)time.sleep(2)for name in senders:# 1.移動鼠標到通訊錄位置,單擊打開通訊錄movePos(28, 147)click()# 2.移動鼠標到搜索框,單擊,輸入要搜索的名字,即微信名movePos(148, 35)click()setText(name)ctrlV()time.sleep(2)enter()time.sleep(2)# 3.復制要發送的消息,發送if types == 1:setText(mes)elif types== 2:setImage(mes)elif types==3:setFile(mes)ctrlV()altS()

最后只需要調用SendWeChat函數即可完成微信的發送。

總結

以上是生活随笔為你收集整理的使用Python实现微信发送文本消息、图片以及附件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。