结合pyttsx3与pynput模拟实现自动发送qq消息

首先解释一下pyttsx3是Python中的文本到语音转换库,而pynput是一个基于python的,能够监听和控制鼠标和键盘的第三方库。pynput主要包括两个类,pynput.mouse和pynput.keyboard,顾名思义,前者可以用来控制和监听鼠标(或者触控板),后者可以用来控制和监听键盘。
下面就让我们使用Python代码实现自动发送QQ消息吧!

1.安装所需的模块

由于pyttsx3与pynput模块均没有随python打包,因此我们需要自己下载!我们打开PyCharm终端输入以下命令安装即可!!

pip install pyttsx3
pip install pynput

2.pynput控制鼠标

为了使用Python控制和模拟鼠标点击与释放,我们首先必须要导入鼠标控制模块Controller,由于我们还需要模拟鼠标点击与移动模块Button,因此我们将其一起导入。

from pynput.mouse import Button, Controller

首先,我们将使用Controller()方法定义鼠标控制器。

mouse = Controller()

现在,如果你可以将鼠标移动到任何位置,只需要以元祖的形式提供x,y坐标即可。

mouse.position = (474,639)

如果你想查看当前鼠标移动的位置,直接打印即可

print('Current mouse position −> {0}'.format(mouse.position))

如果你想实现模拟鼠标左键按下和鼠标左键释放,如下所示

mouse.press(Button.left)
mouse.release(Button.left)

对于鼠标双击,

mouse.press(Button.left,2)

你甚至都可以直接模拟鼠标滚轮滑动

mouse.scroll(0,2)

3.pynput控制键盘

首先,我们同样是要导入对应所需要的模块,

from pynput.keyboard import Key, Controller 

同理pynput控制鼠标类似,首先也要实例化键盘控制器,这里需要主要,如果你需要同时模拟操作键盘与鼠标,那么需要分别给两个控制器起一个别名以示区分不同的控制器。

key = Controller()

现在,为了模拟敲击键盘,我们有press方法与release方法,

key.press('a')
key.release('a')

这里适用于键盘上的所有字母(区分大小写),包括特殊字符等。
如果要模拟点击其他按键,例如shift,alt,ctrl,space,enter等,

key.press(Key.space) #敲击键盘
key.release(Key.space)
key.press(Key.alt)
key.release(Key.alt)
key.press(key.ctrl)
key.release(key.ctrl)

当然,你可能会想,如果要一个一个字符的敲击释放,这里势必会导致代码冗余且不易读,因此,pynput提供了type功能,可以实现一次性输入句子或单词,如下

key.type('Hello!')

4.将文字转换为语音

这里首先是将Pyttsx模块导入,然后使用init方法初始化,紧接着调用say方法可以操作麦克风说出对应的内容,而最后的runAndWait函数的作用就是运行时间循环

import pyttsx3 as pyttsx
engine = pyttsx.init()#初始化
engine.say('Hello')
engine.runAndWait()

其实,关于这个模块还能设置音量大小,语气速率,以及引用其他声音等功能,感兴趣的小伙伴可以执行尝试!

5.模拟给qq好友发送多条消息

使用下述的代码需要注意,首先需要将鼠标移动到对应好友的消息输入框中,如下所示:
在这里插入图片描述

#pynput pip install pynput
from pynput.mouse import Button, Controller as mouse_cl
from pynput.keyboard import Key, Controller as key_col
import pyttsx3 as pyttsx
import time
def send(string):
    engine = pyttsx.init()
    engine.say('请在5秒内建鼠标移动到聊天框')
    engine.runAndWait()
    time.sleep(5)
    # 定位信息输入框
    mouse = mouse_cl() # 获取鼠标控制器
    print(mouse.position)
    # 获取当前输入框的光标
    mouse.press(Button.left)
    mouse.release(Button.left)
    # 通过循环的方式 99+信息
    for i in range(10):
        # 设置需要输入的内容
        key = key_col() #创建键盘控制器
        key.type(string)
        key.press(Key.enter)#按下Enter键
        key.release(Key.enter)# 释放Enter键

if __name__ == '__main__':
    send('Hello Python')

猜你喜欢

转载自blog.csdn.net/qq_51447436/article/details/126778048