微信自动发文字、图片、文件

一、说明

1.1 微信发文字、图片、文件一共有五步:

1.锁定对象;

2.将对象复制剪切板;

3.找到微信句柄;

4.复制到微信;

5.点击发送。

1.2 微信句柄说明

需要把指定的人(群)拉出来,形成一个单独的窗口。

1.3 通用代码

import win32gui, win32api, win32con

def get_handle(to_weixin):
    hw = win32gui.FindWindow(None, to_weixin)                # 获取窗口句柄
    win32gui.GetClassName(hw)                                # 获取窗口classname
    win32gui.GetWindowText(hw)                               # 获取窗口标题
    win32gui.GetDlgCtrlID(hw)
    win32gui.SetForegroundWindow(hw)
    print(‘获取句柄‘)

def ctrlV():
    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)
    print("执行粘贴")

def altS():
    win32api.keybd_event(18, 0, 0, 0)                         # Alt
    win32api.keybd_event(83, 0, 0, 0)                         # s
    win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)  # 释放按键
    win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
    print("执行发送")

二、微信发送文字

2.1 代码展示

import win32gui, win32api, win32con
import pyperclip

def get_handle(to_weixin):
    hw = win32gui.FindWindow(None, to_weixin)                # 获取窗口句柄
    win32gui.GetClassName(hw)                                # 获取窗口classname
    win32gui.GetWindowText(hw)                               # 获取窗口标题
    win32gui.GetDlgCtrlID(hw)
    win32gui.SetForegroundWindow(hw)
    print(‘获取句柄‘)

def ctrlV():
    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)
    print("执行粘贴")

def altS():
    win32api.keybd_event(18, 0, 0, 0)                         # Alt
    win32api.keybd_event(83, 0, 0, 0)                         # s
    win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)  # 释放按键
    win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
    print("执行发送")

sent_text = ‘这是发送的文字; \n this is character‘
pyperclip.copy(sent_text)

if __name__ == ‘__main__‘:
    get_handle(to_weixin= ‘测试人‘)
    ctrlV()
    altS()

2.2 效果展示

三、发送图片

3.1 说明

有两种情况

  1. 截图之后直接发送
  2. 读取图片然后发送

3.2 截图之后直接发送

3.2.1 截取excel中的区域,然后发送。

3.2.1.1 excel展示

excel文件路径:E:\测试\ceshi.xlsx

内容展示:

3.2.1.2 代码展示

import win32gui, win32api, win32con
from time import sleep
from PIL import ImageGrab
import xlwings
import pyperclip

def get_handle(to_weixin):
    hw = win32gui.FindWindow(None, to_weixin)                # 获取窗口句柄
    win32gui.GetClassName(hw)                                # 获取窗口classname
    win32gui.GetWindowText(hw)                               # 获取窗口标题
    win32gui.GetDlgCtrlID(hw)
    win32gui.SetForegroundWindow(hw)
    print(‘获取句柄‘)

def ctrlV():
    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)
    print("执行粘贴")

def altS():
    win32api.keybd_event(18, 0, 0, 0)                         # Alt
    win32api.keybd_event(83, 0, 0, 0)                         # s
    win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)  # 释放按键
    win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
    print("执行发送")

def excel_pictures(to_weixin, path_file, pictures_range_list, sheet_list):
    app = xlwings.App(visible=True, add_book=False)
    wb = app.books.open(path_file)
    sleep(1)
    try:
            for i in range(0, len(pictures_range_list)):
                    sheet_name = sheet_list[i]
                    sheet = wb.sheets[sheet_name]
                    range_ = sheet[pictures_range_list[i]]
                    range_.api.CopyPicture()
                    wb.sheets.add(‘picture‘)
                    sheet_picture = wb.sheets[‘picture‘]
                    sheet_picture.api.Paste()
                    sleep(1)
                    pic = sheet_picture.pictures[0]
                    pic.api.Copy()
                    sleep(1)
                    img = ImageGrab.grabclipboard()
                    sleep(1)
                    get_handle(to_weixin)
                    ctrlV()
                    altS()
                    pic.delete()
                    wb.sheets[‘picture‘].delete()
                    print(‘#粘贴 成功:%s‘ % sheet_name)
    except:
        pass
    wb.close()
    app.quit()

def set_text(text):
    pyperclip.copy(text)
    ctrlV()
    altS()

if __name__ == ‘__main__‘:
    get_handle(to_weixin=‘测试人‘)
    text = ‘下面是发送从excel中截取图片的测试‘
    set_text(text)
    path_file = r‘E:\测试\ceshi.xlsx‘
    sheet_list = [‘ceshi1‘, ‘ceshi1‘, ‘ceshi2‘]         # 图片所在的sheet名称。
    pictures_range_list = [‘A1:C4‘, ‘G10:I13‘, ‘A1:C4‘] # 图片所在的s区域范围。sheet_list必须与pictures_range_list一一对应
    excel_pictures(to_weixin=‘测试人‘, path_file=path_file, sheet_list=sheet_list, pictures_range_list=pictures_range_list)

3.2.1.3 效果展示

3.2.1.3 补充说明:

excel如果连接了数据库,是可以自动刷新的。

区域也是可以变化的。

要发送的文字是可以在excel中写好后发送的。

3.3 读取图片并发送(注意不是文件)

3.3.1 图片展示

3.3.2代码展示

from PIL import Image
from io import BytesIO
from time import sleep
import win32clipboard as clip
import win32gui, win32api, win32con
import os
import pyperclip

def get_handle(to_weixin):
    hw = win32gui.FindWindow(None, to_weixin)  # 获取窗口句柄
    win32gui.GetClassName(hw)  # 获取窗口classname
    win32gui.GetWindowText(hw)  # 获取窗口标题
    win32gui.GetDlgCtrlID(hw)
    win32gui.SetForegroundWindow(hw)
    print(‘获取句柄‘)

def ctrlV():
    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)
    print("执行粘贴")

def altS():
    win32api.keybd_event(18, 0, 0, 0)  # Alt
    win32api.keybd_event(83, 0, 0, 0)  # s
    win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)  # 释放按键
    win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
    print("执行发送")

def read_picture(path):
    picture_list = os.listdir(path)
    for picture in picture_list:
        path_file = path + "\\" + picture
        img = Image.open(path_file)
        output = BytesIO()  # BytesIO实现了在内存中读写bytes
        img.convert("RGB").save(output, "BMP")  # 以RGB模式保存图像
        data = output.getvalue()[14:]
        output.close()
        clip.OpenClipboard()  # 打开剪贴板
        clip.EmptyClipboard()  # 先清空剪贴板
        clip.SetClipboardData(win32con.CF_DIB, data)  # 将图片放入剪贴板
        clip.CloseClipboard()
        ctrlV()
        altS()
        sleep(1)

def set_text(text):
    pyperclip.copy(text)
    ctrlV()
    altS()

if __name__ == ‘__main__‘:
    get_handle(to_weixin=‘测试人‘)
    text = ‘下面是发送从文件中读取图片的测试‘
    set_text(text)
    path = r‘E:\测试\ceshi‘
    read_picture(path=path)

3.3.3 效果展示

四、 发送文件

4.1 说明

发送文件用的方法和前面有点不一样,前面都是指定内容,区域,名称来做的。必要容易控制。

而发送文件是通过指定位置来操作的。

4.2 文件展示

4.2.1 说明

排列顺序按照名称来排列,这样顺序不容易改变。不要轻易往里面放文件

把“ceshi2”以文件的形式发送给指定的人(群)

4.3 代码展示

import  os
from time import sleep
import win32gui, win32api, win32con,win32ui
import pyperclip

def get_handle(to_weixin):
    hw = win32gui.FindWindow(None, to_weixin)                # 获取窗口句柄
    win32gui.GetClassName(hw)                                # 获取窗口classname
    win32gui.GetWindowText(hw)                               # 获取窗口标题
    win32gui.GetDlgCtrlID(hw)
    win32gui.SetForegroundWindow(hw)
    print(‘获取句柄‘)

def ctrlV():
    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)
    print("执行粘贴")

def altS():
    win32api.keybd_event(18, 0, 0, 0)                         # Alt
    win32api.keybd_event(83, 0, 0, 0)                         # s
    win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)  # 释放按键
    win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
    print("执行发送")

def file_copy(path):
    os.system("explorer.exe /n, {}".format(path))
    sleep(10)                                                  # 必须沉睡一段时间,把窗口打开
    win32api.keybd_event(40, 0, 0, 0)                          # 按下向下的按键
    win32api.keybd_event(40, 0, win32con.KEYEVENTF_KEYUP, 0)   # 松开向下的按键
    win32api.keybd_event(40, 0, 0, 0)
    win32api.keybd_event(40, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, 0, 0)  # ctrl按下
    win32api.keybd_event(67, 0, 0, 0)  # c按下
    win32api.keybd_event(67, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)

def set_text(text):
    get_handle(to_weixin=‘测试人‘)
    pyperclip.copy(text)
    ctrlV()
    altS()

if __name__ == ‘__main__‘:
    text = ‘下面是发送文件的测试‘
    set_text(text)
    path = r‘E:\测试‘
    file_copy(path)
    sleep(5)                             #必须沉睡一会
    get_handle(to_weixin = ‘测试人‘)
    ctrlV()
    altS()

4.4 效果展示

原文地址:https://www.cnblogs.com/qianslup/p/12410042.html

时间: 2024-11-05 21:55:49

微信自动发文字、图片、文件的相关文章

推荐一个Xcode插件: KSImageNamed (自动补全图片文件名称, 并显示图片大小)

http://www.csdn.net/article/2014-05-04/2819586-the-best-xcode-plugins 5. KSImageNamed KSImageNamed是一款能够帮助开发者在Xcode中自动补全图片文件名称的插件,其开发者Kent Sutherland来自美国波士顿.KSImageNamed支持NSImage和UIImage,当开发者写到"[UIImage imaged:"时,便会自动将项目中的图片名称提示出来.此外,KSImageNamed

另外一个给微信企业号发文字信息的python脚本

http://chenx1242.blog.51cto.com/10430133/1954634 文章里面有一个python脚本可以用来给微信企业号发信息,如果你不喜欢那篇文章里面"title+content"的样式,可以使用如下的脚本: #coding:utf-8 import urllib2 import json import sys def getMsg():     #为了避免发送中文消息报错,使用utf8方式编码     reload(sys)     sys.setdef

【追梦少年】微信如何发广告

文章的开头,我想随便说几句,不知不觉我已经写了十多篇微信营销方面的文章了,这些文章可都是实实在在的干货,都是我以前卖特产,卖蜂蜜积累下来的干货经验分享,我发现加我微信的朋友,很多都在问我现在卖什么产品,卖得好不好,今天我就在这里告诉大家了,免得以后都来问我,我现在还在卖蜂蜜但是由于我的货源都是亲自去找农民收购,也就是100%的真货,所以货源不是很多,所以很少做推广卖,但是每个月也可以卖4-5千块钱,曾经一个月卖过1W多的,特产呢,我当初卖特产不是为了赚钱 仅仅是为了通过卖便宜特产让朋友圈的好友信

Python PIL创建文字图片

PIL库中包含了很多模块,恰当地利用这些模块可以做许多图像处理方面的工作. 下面是我用来生成字母或字符串测试图片而写的类及测试代码. 主要用到的模块: PIL.Image,PIL.ImageDraw,PIL.ImageFont PIL.Image用来生成一个空的图片,ImageDraw用来在空图片上画图及写字符,ImageFont则是创建需要使用到的字体 #-*- coding:gb2312 -*- from PIL import Image,ImageDraw,ImageFont,ImageO

微信企业号上传媒体文件之本地文件上传

微信企业号上传媒体文件之本地文件上传 企业在使用接口时,对多媒体文件.多媒体消息的获取和调用等操作,是通过media_id来进行的. 通过接口https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE,企业可以上传多媒体文件. 注意,每个多媒体文件(media_id)会在上传到微信服务器3天后自动删除,以节省服务器资源. 通常文件上传是通过html表单进行的,通过HttpURLConne

Android文字图片写入CSV(Base64)并分享

做的一个分享的功能,将文字图片以CSV的形式分享到邮件之类的应用. 首先,CSV逗号分隔值文件格式(Comma-Separated Values),纯文本形式,逗号分隔,一行数据不跨行. 图片转换成Base64字符串 public String writeBase64(String path) { //path图片路径 byte[] data = null; try { InputStream in = new FileInputStream(path); data = new byte[in.

微信网页分享标题图片自定义设置(最新)

1 前言 刚好有微信网页分享标题图片自定义设置这个需求,然后查找文档,发现有两种方案[1],但是第一种方案已经失效了,只能走第二种方案,然后根据实战配置好了,本文会写上配置中遇到的问题和解决方案,也作为记录使用,方便自己也方便他人. 2 步骤 2.1 准备工作 2.1.1 微信JS-SDK说明文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 2.1.2 附录6-DEMO页面和示例代码:在JS-SDK说明文档中

python自动发邮件

想着能用程序自动发邮件就好了,想到就动手写了一个自动发邮件的脚本. 一:前提准备(我使用的是qq邮箱) 1.开通qq邮箱的smtp服务 2.上代码 # -*- coding: utf-8 -*- # @Time : 18-10-14 上午11:00 # @Author : Felix Wang from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.im

微信企业号上传媒体文件之服务器文件上传

微信企业号上传媒体文件之服务器文件上传 企业在使用接口时,对多媒体文件.多媒体消息的获取和调用等操作,是通过media_id来进行的. 通过接口https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE,企业可以上传多媒体文件. 注意,每个多媒体文件(media_id)会在上传到微信服务器3天后自动删除,以节省服务器资源. 通常文件上传是通过html表单进行的,通过HttpURLConn