本示例是调用Windows API模拟发送,用Python调用win32api这个库来调用Windows API模拟人的手动操作来发送消息。

在使用前,请将你微信的窗口设置为在最前面,这样就便于程序找到你的窗口!

import pyautogui
import time
import win32api
import win32con
import win32gui
import win32clipboard as wdef FindWindow(chatroom):win = win32gui.FindWindow(None, chatroom)print("找到窗口句柄:%x" % win)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, 0, 0, 300, 500, win32con.SWP_SHOWWINDOW)win32gui.SetForegroundWindow(win)  # 获取控制time.sleep(1)tit = win32gui.GetWindowText(win)print('已启动【'+str(tit)+'】窗口')else:print('找不到【%s】窗口' % chatroom)exit()# 设置和粘贴剪贴板
def ClipboardText(ClipboardText):w.OpenClipboard()w.EmptyClipboard()w.SetClipboardData(win32con.CF_UNICODETEXT, ClipboardText)w.CloseClipboard()time.sleep(1)win32api.keybd_event(17,0,0,0)win32api.keybd_event(86,0,0,0)win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0)win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)# 模拟发送动作
def SendMsg():win32api.keybd_event(18, 0, 0, 0)win32api.keybd_event(83,0,0,0)win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0)# 模拟发送微信消息
def SendWxMsg(wxid,sendtext):# 先启动微信FindWindow('微信')time.sleep(1)# 定位到搜索框pyautogui.moveTo(143, 39)pyautogui.click()# 搜索窗口ClipboardText(wxid)time.sleep(1)# 进入窗口pyautogui.moveTo(155, 120)pyautogui.click()# 粘贴文本内容ClipboardText(sendtext)SendMsg()print('已发送')# 调用函数(微信号或微信昵称或备注,需要发送的文本消息)
SendWxMsg('face6009','Python发送微信消息')

动图演示

经过学习,我在想要不要用这个方法实现一套简单的微信操作脚本,然后写成HttpApi,然后通过Http进行调用,在网页实现简单的远程控制微信,或者做个机器人等,都可以,但这个目前应该还会有不少的问题,例如延迟,精准度,这些都是一个问题,所以市面上没有人做这类型的,目前我已经实现了部分功能。

1、发送消息给好友
2、发送消息到微信群
3、邀请微信进群
4、将微信移出群聊
5、发布群公告
6、转发一篇图文

2021-09-02新增发送文件和转发群消息

import pyautogui
import time
import win32api
import win32con
import win32gui
import win32clipboard as wdef FindWindow(chatroom):win = win32gui.FindWindow(None, chatroom)print("找到窗口句柄:%x" % win)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_TOP, 0, 0, 500, 700, win32con.SWP_SHOWWINDOW)win32gui.SetForegroundWindow(win)  # 获取控制time.sleep(1)tit = win32gui.GetWindowText(win)print('已启动【'+str(tit)+'】窗口')else:print('找不到【%s】窗口' % chatroom)exit()# 设置和粘贴剪贴板
def ClipboardText(ClipboardText):w.OpenClipboard()w.EmptyClipboard()w.SetClipboardData(win32con.CF_UNICODETEXT, ClipboardText)w.CloseClipboard()time.sleep(1)win32api.keybd_event(17,0,0,0)win32api.keybd_event(86,0,0,0)win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0)win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)# 模拟发送动作
def SendMsg():win32api.keybd_event(18, 0, 0, 0)win32api.keybd_event(83,0,0,0)win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0)# 模拟发送微信文本消息
def SendWxMsg(wxid,sendtext):# 先启动微信FindWindow('微信')time.sleep(1)# 定位到搜索框pyautogui.moveTo(143, 39)pyautogui.click()# 搜索微信ClipboardText(wxid)time.sleep(1)# 进入聊天窗口pyautogui.moveTo(155, 120)pyautogui.click()# 粘贴文本内容ClipboardText(sendtext)# 发送SendMsg()print('已发送')# 关闭微信窗口time.sleep(1)pyautogui.moveTo(683, 16)pyautogui.click()# 模拟发送文件消息(图片、文档、压缩包等)
def SendWxFileMsg(wxid,imgpath):# 先启动微信FindWindow('微信')time.sleep(1)# 定位到搜索框pyautogui.moveTo(143, 39)pyautogui.click()# 搜索微信ClipboardText(wxid)time.sleep(1)# 进入聊天窗口pyautogui.moveTo(155, 120)pyautogui.click()# 选择文件pyautogui.moveTo(373, 570)pyautogui.click()ClipboardText(imgpath)time.sleep(1)pyautogui.moveTo(784, 509)pyautogui.click()# 发送SendMsg()print('已发送')# 关闭微信窗口time.sleep(1)pyautogui.moveTo(683, 16)pyautogui.click()# 转发群里最新的一条消息
def ZhuanfaMsg(wxid,groupname):# 先启动微信FindWindow('微信')time.sleep(1)# 定位到搜索框pyautogui.moveTo(143, 39)pyautogui.click()# 搜索群ClipboardText(groupname)time.sleep(1)# 进入群窗口pyautogui.moveTo(155, 120)pyautogui.click()# 开始转发pyautogui.moveTo(484, 439)time.sleep(1)pyautogui.rightClick()pyautogui.moveTo(543, 454)time.sleep(1)pyautogui.click()# 搜索用户ClipboardText(wxid)time.sleep(1)pyautogui.moveTo(828, 406)pyautogui.click()time.sleep(1)# 确定转发pyautogui.moveTo(1108, 755)pyautogui.click()# 发送文本消息(微信号或微信昵称或备注,需要发送的文本消息)
SendWxMsg('sansure2016','Python发送微信消息')# 发送文件消息(图片、文档、压缩包等)
SendWxFileMsg('sansure2016',r"C:\Users\TANKING\Desktop\cbzqx77.jpg")# 转发群里最新的一条消息(微信号或微信昵称或备注,群名称)
ZhuanfaMsg('sansure2016','里客云科技')

Python发送微信消息(文字、图片、文件)给指定好友和微信群(调用Win32 API模拟人的手动操作来发送消息)相关推荐

  1. Python发送微信消息(文字、图片、文件)给指定好友和微信群,零基础可看懂(附源码和教程)

    前言 本示例是调用Windows API模拟发送,用Python调用win32api这个库来调用Windows API模拟人的手动操作来发送消息. 在使用前,请将你微信的窗口设置为在最前面,这样就便于 ...

  2. 微信跳转手机默认浏览器打开指定HTML链接 微信点击链接直接下载安装包实现方式及源码

    需求:微信跳转手机默认浏览器打开指定HTML链接 微信点击链接直接下载安装包 原因:在微信内不允许直接下载apk 这里有一个解决方案,直接上关键代码 <!doctype html> < ...

  3. 【我写了个小软件,老板说要给我加薪】微信助手软件|微信个性化群发消息和图片|一键生成好友头像照片墙|附下载和使用方法

    前言 各位朋友们好,许久不见!博客停更的三个月笔者其实也做了很多事,也有一些记录,只是一直没总结发博客.2023年我会努力在工作学习之余多多总结博客,与大家分享我的经验和心得. 在此恭祝大家新年快乐, ...

  4. 《自拍教程71》Python mediainfo批量重命名图片文件,AV专家必备!

    案例故事: 大部分带彩色屏幕的终端设备,不管是手机,车机,电视等等,都需要涉及图片的显示, 作为一名专业的多媒体测试人员,我们需要一堆的规范化标准的的图片测试文件, 但是发现图片资源名字命名的很随意比 ...

  5. Python批量OCR日语文字图片并输出内容至文本文档~(调用百度OCRapi)

    如题~对应文字游戏录屏制作字幕的第二模块 from aip import AipOcr import os import time''' Author: AleryXiao Date: 2022.10 ...

  6. [iOS]分享文件到QQ好友或微信好友

    APP中需要将文件分享给QQ和微信好友,常用下面这两种方式. 1.使用系统的UIActivityViewController类发送 2.使用QQ和微信的API分享 UIActivityViewCont ...

  7. 微信上线朋友圈搜索可指定好友和时间段

    昨天,微信上线了朋友圈搜索和文章搜索功能,其中新版微信朋友圈搜索可以指定好友和时间段.朋友圈指定好友的搜索操作方法为:搜索 → "朋友圈"入口 → 输入好友"昵称/微信号 ...

  8. python生成手写文字图片_使用生成对抗网络(GAN)生成手写字

    先放结果 这是通过GAN迭代训练30W次,耗时3小时生成的手写字图片效果,大部分的还是能看出来是数字的. 实现原理 简单说下原理,生成对抗网络需要训练两个任务,一个叫生成器,一个叫判别器,如字面意思, ...

  9. html点击链接直接加微信群,微信给文字加链接代码分享(原来微信超链接是这样加的)...

    相信大家都用过好多的表白神器,所以在这里小编就不给大家展示了,今天只和大家说一个也许大家还没有用过的在微信里的小功能! 超链接 超级链接简单来讲,就是指按内容链接. 超级链接在本质上属于一个网页的一部 ...

最新文章

  1. 【MATLAB】稀疏矩阵(含有大量0元素的矩阵)
  2. ⒈Altiris cms 7.0 安装前准备工作
  3. DL-1 用一元二次方程 y=x^2+b 构建神经网络
  4. java中正则表达式并集_对Java中正则表达式的一些理解
  5. 10月24日见!iQOO Neo 855版官宣:跑分不输骁龙855Plus
  6. python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法...
  7. Shiro教程_2 Shiro+SpringBoot+Mysql+Redis(缓存)
  8. CF1047C Enlarge GCD
  9. 内存一致性模型(Memory Consistency Models)
  10. 计算系数(多项式展开+快速幂)
  11. vue项目使用3d高德城市地图用法
  12. [转载]Malcolm的新书:Outliers
  13. 电镀废水的来源以及常见的处理方式,各种工艺的讲解
  14. python使用微信设置-用Python玩微信跳一跳黑科技详细使用教程
  15. 用Canvas为网页添加动态背景
  16. 斑马ZT510打印设置
  17. Java程序员校招蚂蚁金服,中科创达java面试题
  18. 学习记录528@更换https证书
  19. 超大文件中在有限的内存里找到单词频率 top 100
  20. 计算机语言输入不见了,电脑输入法不见了的解决方法

热门文章

  1. 【2】数据结构与算法 —— 选择排序算法
  2. 基于SSH的二手图书在线交易平台设计与实现
  3. php 动态替换视频图片,用PS将bmp图片制作出漂亮的动态视频效果-PS教程
  4. 未明学院:中金研究等多个名企offer,学姐告诉你如何拿下好实习!
  5. python多线程爬取壁纸
  6. x7系统怎么锁定计算机,CorelDRAW X7如何锁定对象和解锁对象
  7. [RK3399][Android7.1] 调试笔记 --- I2S1工作输出是12MHz问题
  8. 当前我国银行信息化关注的问题
  9. android 版本更新下载,Android下载新版本并更新(DownLoadManager、HttpURLConnection)
  10. 2015年十大热门Android开源新项目