【Python】实现发送文本、图片、视频至微信PC端

523 阅读2分钟

转:https://blog.csdn.net/qq812457115/article/details/122011848

1. 创建system.py 主要用于文件、文本的复制到剪切板

# coding=utf-8
import os
import win32clipboard
import win32con
import requests
from io import *
from PIL import Image
import time
from PyQt5 import QtCore, QtWidgets


# 复制文字
def setText(aString):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, aString)
    win32clipboard.CloseClipboard()


# 复制图片
def setImg(aImage):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardData(win32con.CF_DIB, loadURL(aImage))
    win32clipboard.CloseClipboard()


# 复制文件
def setFile(url):
    fileName = downURL(url)
    app = QtWidgets.QApplication([])
    data = QtCore.QMimeData()
    url = QtCore.QUrl.fromLocalFile(fileName)
    data.setUrls([url])
    app.clipboard().setMimeData(data)
    return fileName


# 获取网络图片
def loadURL(aImage):
    response = requests.get(aImage)
    response = response.content
    BytesIOObj = BytesIO()
    BytesIOObj.write(response)
    img = Image.open(BytesIOObj)
    output = BytesIO()
    img.convert("RGB").save(output, "BMP")
    data = output.getvalue()[14:]
    output.close()
    return data


# 下载网络资源到本地
def downURL(url):
    file = os.getcwd() + "\\" + str(time.time()) + ".mp4"
    r = requests.get(url)
    with open(file, "wb") as code:
        code.write(r.content)
    return file


# 删除本地资源
def deleteLocalFIle(fileName):
    if fileName is not None:
        try:
            os.remove(fileName)
        except IOError:
            time.sleep(2)
            deleteLocalFIle(fileName)


# 关闭指定端口进程
def closeProcessByProt(prot):
    if prot is None:
        return
    r = os.popen("netstat -ano | findstr " + prot)
    text = r.read()
    arr = text.split("\n")
    for text0 in arr:
        arr2 = text0.split(" ")
        if len(arr2) > 1:
            pid = arr2[len(arr2) - 1]
            os.system("taskkill /PID " + pid + " /T /F")
    time.sleep(2)

2. 创建sendToWX 用于把剪切板粘贴到微信里面并发送

# coding=utf-8
import win32api
import win32con
import win32gui
import time
from utils.system import deleteLocalFIle


def zhanTie():
    win32api.keybd_event(17, 0, 0, 0)  # ctrl键位码是17
    win32api.keybd_event(86, 0, 0, 0)  # v键位码是86
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)  # 释放按键
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)


def huiche(fileName):
    win32api.keybd_event(18, 0, 0, 0)  # Alt键位码
    win32api.keybd_event(83, 0, 0, 0)  # s键位码
    win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)  # 释放按键
    win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(0.5)
    deleteLocalFIle(fileName)


def FindWindow(chatroom):
    win = win32gui.FindWindow("WeChatMainWndForPC", chatroom)
    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, 100, 100, 500, 500,
                              win32con.SWP_SHOWWINDOW)  # 第二个参数是置顶,前两个数字是位置,后两个数字是大小,最后一个是显示
        win32gui.SetForegroundWindow(win)  # 获取控制
        time.sleep(0.5)
    else:
        print('找不到该窗口,请双击联系人,保证其是一个单独的窗口' % chatroom)


def send(chatroom,fileName = None):
    FindWindow(chatroom)
    zhanTie()
    huiche(fileName)


3. 运行

from utils import sendToWX
import utils

utils.setText(u'我终于调试好了')
sendToWX.send(u"微信")
utils.setImg("https://profile.csdnimg.cn/D/0/B/2_qq812457115")
sendToWX.send(u"微信")
fileName = utils.setFile("https://xcxyc.oss-cn-hangzhou.aliyuncs.com/userImg/1634897338671.mp4?Expires=1639795293&OSSAccessKeyId=LTAI4FsVzGTGB1S1H8NQ5Nv2&Signature=QlDjXI8kUP89TGrE1Xj%2BRmTJuUQ%3D")
sendToWX.send(u"微信", fileName)

4. 项目打包成.exe文件

# E:\development\tool\python\warehouse1\Lib\site-packages 仓库地址具体位置自行修改
# main.py 程序的入口文件
pyinstaller -D -w -p E:\development\tool\python\warehouse1\Lib\site-packages main.py

项目源码:

https://gitee.com/wry-python-demo/send-message-to-wechat.git

原文链接:https://blog.csdn.net/qq812457115/article/details/122011848