• 结合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
    
    • 1
    • 2

    2.pynput控制鼠标

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

    from pynput.mouse import Button, Controller
    
    • 1

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

    mouse = Controller()
    
    • 1

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

    mouse.position = (474,639)
    
    • 1

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

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

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

    mouse.press(Button.left)
    mouse.release(Button.left)
    
    • 1
    • 2

    对于鼠标双击,

    mouse.press(Button.left,2)
    
    • 1

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

    mouse.scroll(0,2)
    
    • 1

    3.pynput控制键盘

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

    from pynput.keyboard import Key, Controller 
    
    • 1

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

    key = Controller()
    
    • 1

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

    key.press('a')
    key.release('a')
    
    • 1
    • 2

    这里适用于键盘上的所有字母(区分大小写),包括特殊字符等。
    如果要模拟点击其他按键,例如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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    key.type('Hello!')
    
    • 1

    4.将文字转换为语音

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

    import pyttsx3 as pyttsx
    engine = pyttsx.init()#初始化
    engine.say('Hello')
    engine.runAndWait()
    
    • 1
    • 2
    • 3
    • 4

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

    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')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
  • 相关阅读:
    如何在报表控件FastReport.NET中连接XLSX 文件作为数据源?
    TDengine可通过数据同步工具 DataX读写
    MySQL表的约束
    Python与Conda创建虚拟环境
    CTFshow 信息收集 web12 13 14 15
    06-CSS元素类型
    Java数据结构之优先级队列(PriorityQueue)
    JS深拷贝和浅拷贝的区别
    Feign 从注册到调用原理分析
    Django 数据迁移时 提示 No changes detected问题解决
  • 原文地址:https://blog.csdn.net/qq_51447436/article/details/126778048