自用从 定义发送函数开始改就行了,前面几个部分直接复制进一个py文件就可以。
导包
先导入一堆有用没用的包
import pyautogui as auto
import time
import pyperclip
import win32clipboard
import win32con
from PIL import Image
from io import BytesIO
定义文字复制函数
x
和y
是全局变量,所以函数输入里面没有。
def fuzhi(text):
"""
将指定文字text复制到屏幕上(x,y)坐标处
"""
auto.dragTo(x, y, duration=0.3) # 为了延长点击时间
pyperclip.copy(text.lstrip())
auto.hotkey('ctrl', 'v')
auto.hotkey('enter')
time.sleep(interval)
def fuzhi2(text):
"""
将大段文字text按行复制到屏幕上(x,y)坐标处
"""
lst = text.splitlines()
for s in lst:
fuzhi(s,x,y)
定义图片复制类
这个类我是网上的好多篇文章看过以后缝合起来的…所以他的原理是什么其实不重要,抄就完了。
class Clipboard():
"""
模拟Windows设置剪贴板
"""
# 读取剪贴板
@staticmethod
def getText():
win32clipboard.OpenClipboard()
d = win32clipboard.GetClipboardData(win32con.CF_UNICODETEXT)
win32clipboard.CloseClipboard()
return d
# 设置剪贴板内容
@staticmethod
def setText(aString):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT,aString)
win32clipboard.CloseClipboard()
@staticmethod
def send_msg_to_clip(type_data, msg):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(type_data, msg)
win32clipboard.CloseClipboard()
@staticmethod
def paste_img(file_img):
image = Image.open(file_img)
output = BytesIO()
image.save(output, 'BMP')
data = output.getvalue()[14:]
output.close()
Clipboard.send_msg_to_clip(win32clipboard.CF_DIB, data)
定义图片复制函数
根据上面那个不重要的类,调用一下paste_img
函数,然后再用pyautogui
粘贴到当前鼠标位置,按回车发送消息。
def fuzhi_img(name):
Clipboard.paste_img(name)
time.sleep(1)
auto.hotkey('ctrl','v')
auto.hotkey('enter')
定义发送函数(这里根据需求改)
把str1
、str2
和图片路径换成自己想要发送的就可以用了。
def send():
str1 = "这里可以放一行文字"
fuzhi(str1) # 一行文字用fuzhi
str2 = """这里很多行文字"""
fuzhi2(str2) # 多行文字用fuzhi2
fuzhi_img("这里放图片路径") # 粘贴图片用fuzhi_img
最后的main
如果不想在terminal输入x
、y
、interval
的话可以直接进行赋值。因为是使用alt+tab
进行应用跳转,需要确保第一个应用界面是IDE,第二个应用界面是微信或者qq等发消息的软件。
x
、y
的值可以使用任何截图工具从屏幕左上角截到微信消息框,看一下横纵的像素值是多少。如果是(700,1000)
可以直接赋值x = 1000
,y = 700
.
if __name__ == '__main__':
x, y = input("请输入微信文本框坐标:").split()
x = int(x)
y = int(y)
interval = int(input("请输入文本发送时间间隔(s):"))
# 直接赋值
# x = 1000
# y = 700
# interval = 10 # 10秒发一行文本
auto.hotkey('alt','tab') # 切换到微信界面
auto.moveTo(x,y) # 定位到微信输入框
auto.dragTo(x,y, duration=0.3) # 为了延长点击时间
send() # 发送send函数里的内容