转: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