编程语言
首页 > 编程语言> > Python给指定微信好友自动发送信息和图片

Python给指定微信好友自动发送信息和图片

作者:互联网

import os
import win32gui #pywin32-221.win-amd64-py3.7.exe
import win32con
from ctypes import *
import win32clipboard as w
import time
from PIL import Image #pip install pillow
#pip install -i https://pypi.douban.com/simple pillow
import win32api
 
#发送文字
def setText(info):
    w.OpenClipboard()
    w.EmptyClipboard()
    w.SetClipboardData(win32con.CF_UNICODETEXT, info)
    w.CloseClipboard()
 
#发送图片
def setImage(imgpath):
    im = Image.open(imgpath)
    im.save('1.bmp')
    aString = windll.user32.LoadImageW(0, r"1.bmp", win32con.IMAGE_BITMAP, 0, 0, win32con.LR_LOADFROMFILE)
 
    if aString != 0:  ## 由于图片编码问题  图片载入失败的话  aString 就等于0
        w.OpenClipboard()
        w.EmptyClipboard()
        w.SetClipboardData(win32con.CF_BITMAP, aString)
        w.CloseClipboard()  
 
#微信搜索框不会自动获取焦点,故需要模拟鼠标点击到搜索框的位置
def m_click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
 
def pasteInfo():
    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 searchByUser(uname):
    hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')
    setText(uname)
    m_click(100,40)
    time.sleep(0.5)
    m_click(100,40)
    pasteInfo()
    time.sleep(1)
    m_click(100,120)#搜索到之后点击
    #win32api.keybd_event(13,0,0,0)#回车
    #win32api.keybd_event(13,0,KEYEVENTF_KEYUP,0)
    #win32gui.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
    #win32gui.SendMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
 
def sendInfo():
    time.sleep(1)
    pasteInfo()
    time.sleep(1)
    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)
 
 
#发送完信息之后关闭窗口(跟QQ不一样,可以不关闭),接着搜索发送
def closeByUser(uname):
    hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')
    win32api.keybd_event(18,0,0,0)  #Alt
    win32api.keybd_event(115,0,0,0) #F4
    win32api.keybd_event(115,0,KEYEVENTF_KEYUP,0)
    win32api.keybd_event(18,0,KEYEVENTF_KEYUP,0)
 
'''
searchByUser('Tony老师')
setText('Tony老师理发师')
sendInfo()
time.sleep(1)
searchByUser('文件传输助手')
setText('地表最强CPU')
sendInfo()
'''
 
#获取无后缀的图片名称
def getNosuffixImgName(imgname):
    return os.path.splitext(imgname)[0]
 
imgdir='imgs/'
imgs=os.listdir(imgdir)
for img in imgs:
    searchByUser(getNosuffixImgName(img))
    setImage(imgdir+img)
    sendInfo()
    time.sleep(1)

 

标签:Python,微信,发送信息,keybd,win32con,import,event,def,win32api
来源: https://www.cnblogs.com/luweiweicode/p/14361792.html