使用python自动发送QQ消息

这篇文章是为了记录之前编写的自动给好友发送QQ消息,实现自动化操作。(虽然需要手动执行,但还是值得记录一下)

目录

  • 一、登录QQ
  • 二、打开聊天窗口
  • 三、发送消息
  • 四、完整代码

使用python自动发送QQ消息_第1张图片

一、登录QQ

首先判断是否已经登录QQ,若未登录则进行QQ登录操作,否则执行下一步操作。

  • 这里使用psutil库判断QQ是否登录,它的主要原理是遍历系统中的所有进程的PID,若存在PID的进程名与QQ.exe相同则已登录QQ,否则表明未登录QQ
  • 若已登录QQ,则进入下一步的操作,否则执行登录QQ的操作。登录QQ这里直接使用os.startfile(QQ_dir)打开QQQQ_dirQQ所在目录)

二、打开聊天窗口

这里我使用pyautogui库执行自动化操作

  • 首先打开QQ的主界面,使用pyautogui操作鼠标点击任务栏中的QQ图标,然后点击主界面中的搜索栏进行好友的搜索。
  • 复制粘贴好友的名称(全称)到搜索栏并使用pyautogui模拟按下回车搜索相关好友,并点击搜索到的第一个匹配项(QQ搜索好友全称,其第一个匹配项都是我们想找的好友)

三、发送消息

这里我也使用pyautogui库执行自动化操作

  • 点击好友聊天窗口的输入栏,复制粘贴需要发送的信息并模拟按下回车发送
  • 发送完毕后,关闭主界面并使用pyautogui库模拟按下快捷键CTRL+W关闭聊天窗口

四、完整代码

# -*- coding:utf-8 -*- 
"""
Author:G3
Time: 2021/7/13 
Software: PyCharm
"""
# 该例程仅供学习使用

# 使用psutil来判断QQ是否登录
import psutil,time,os
import pyperclip
import pyautogui as gui

people = '***'	# 好友全称
message = '***'	# 发送的消息

QQ_dir = r'E:\Tencent\QQ\Bin\QQ.exe'	# QQ路径

# 判断QQ是否登录
def proc_exist(process_name):
    pl = psutil.pids()
    for pid in pl:  # 通过PID判断
        if psutil.Process(pid).name() == process_name:
            return isinstance(pid,int)

# 发送消息
def send_msg(people, msg):
    if proc_exist('QQ.exe'):
        # 打开QQ主界面
        gui.moveTo(1580, 1080, duration=0.2)
        gui.moveTo(1580, 1050, duration=0.2)
        gui.click()
        time.sleep(0.5)
    else:
        # 登录QQ
        QQ_login()

    # 搜索好友并打开聊天窗口
    gui.moveTo(1650, 285, duration=0.2)
    gui.click()
    time.sleep(0.5)
    pyperclip.copy(people)
    gui.hotkey('ctrl', 'v')
    time.sleep(0.5)
    gui.hotkey('Enter')
    time.sleep(1)

    # 输入需要发送的信息
    gui.moveTo(600, 850, duration=0.2)
    gui.click()
    pyperclip.copy(msg)
    gui.hotkey('ctrl', 'v')
    gui.hotkey('Enter')

    # 隐藏主界面并退出聊天界面
    gui.moveTo(1850, 150, duration=0.5)
    gui.click()
    time.sleep(0.5)
    gui.hotkey('ctrl', 'w')

# 登录QQ
def QQ_login():
    os.startfile(QQ_dir)
    print('正在打开QQ')
    time.sleep(3)
    gui.moveTo(960, 695, duration=0.5)
    gui.click()
    time.sleep(10)

if __name__ == "__main__":

    send_msg(people,message)

# 查看鼠标位置
# while True:
#     last_position=gui.position()
#     if last_position!=gui.position():
#         print(gui.position())

注意:这里我基本上都是用的pyautogui操作鼠标和键盘执行自动化操作,其中的鼠标移动、点击坐标是根据我自身情况编写的,所以可能其他人不太适用,如果需要使用则需根据具体情况修改。

你可能感兴趣的:(python,pyautogui)