项目工程的目录内容如下:

alt

main.py的代码如下:

# coding: utf-8
from time import sleep
from os import system
from pywinauto.keyboard import send_keys
import pyperclip

'''
    不存在对象库.txt:存放没有加好友的名单。
    发送内容.txt:群发的消息内容。
    待发送对象.txt:群发的名单;程序运行后,保留没有发送成功的名单。
    无需确认对象库.txt:该文件里累积存入,已经成功群发成功的对象,这些对象之后每次群发时,都无需在终端里确认。
'''

if __name__ == '__main__':
    notObjects = []  # 不存在的联系人
    sendFailObjects = []  # 发送失败的对象
    confirmedObjects = []  # 已经确认过可成功发送的对象
    newConfirmedObjects = []  # 本次新增确认可成功发送的对象
    content = ""  # 发送内容
    with open('不存在对象库.txt', 'r', encoding='utf-8') as notexistf:
        notObjects = notexistf.read().split()
        notexistf.close()
    with open('无需确认对象库.txt', 'r', encoding='utf-8') as confirmedf:
        confirmedObjects = confirmedf.read().split()
        confirmedf.close()
    with open('发送内容.txt', 'r', encoding='utf-8') as contentf:
        content = contentf.read()
        contentf.close()
    pyperclip.copy(content)  # 将待发送内容复制到粘贴板

    wechat_path = r'C:\Tencent\WeChat\WeChat.exe'
    cnts = 0
    cntf = 0
    with open('待发送对象.txt', 'r', encoding='utf-8') as objectf:
        for object in objectf.read().split():
            system(wechat_path)  # 打开微信
            send_keys('^f')  # 查找快捷键
            send_keys(object)  # 查找聊天对象
            sleep(1)
            if (object in confirmedObjects):  # 该对象之前已经被确认可发送成功,无需核对,直接发送
                send_keys('{ENTER}')  # 回车进入聊天框
                sleep(1)
                send_keys('^v')  # ctrl v ,粘贴聊天内容
                send_keys('{ENTER}')  # 回车发送
                print('*' + object + ',发送完毕!')
                cnts += 1
            else:
                print(object + ',是否查找正确?\n     正确请直接Enter,否则输入其他任意字符再Enter.')
                if (input() == '' and object not in notObjects):
                    system(wechat_path)  # 打开微信
                    send_keys('{ENTER}')  # 回车进入聊天框
                    sleep(1)
                    send_keys('^v')  # ctrl v ,粘贴聊天内容
                    send_keys('{ENTER}')  # 回车发送
                    newConfirmedObjects.append(object)
                    print('*' + object + '发送完毕!')
                    cnts += 1
                else:
                    sendFailObjects.append(object)
                    cntf += 1
                    system(wechat_path)  # 打开微信
                    send_keys('^f')  # 查找快捷键
                    send_keys('{BKSP}{BKSP}{BKSP}')  # 清除搜索框里的无效联系人
        objectf.close()
    tmp = ''
    for i in sendFailObjects:
        tmp += i + '\n'
    with open('待发送对象.txt', 'w', encoding='utf-8') as sendFailObjectsf:
        sendFailObjectsf.write(tmp)
        sendFailObjectsf.close()
    tmp = ''
    for i in newConfirmedObjects:
        tmp += i + '\n'
    with open('无需确认对象库.txt', 'a', encoding='utf-8') as confirmedf:
        confirmedf.write(tmp)
        confirmedf.close()
    print(str(cnts) + '人 发送成功!!!\n' + str(cntf) + '人 发送失败!!!')
    system('pause')

qunfa.bat的代码如下:

chcp 65001
start python .\main.py