• 「PyMouse」做个连点器给老师点赞


    源码

    文章开头先上成品(Command Line Mouse Clicker):

    from pymouse import PyMouse
    import time
    import keyboard
    tutorial = """
    使用教程:
    此程序开始运行后,首先,你可以输入连点间隔。
    随后,程序进入连点模式,按住p,程序就会开始连点。
    按下Q可以退出连点模式,并重新设置连点间隔。
    需要注意的是,实际连点间隔最终取决于系统性能,可能会与设定值有一定差距。
    Powered by AbsoCube
    """
    print(tutorial)
    mouse = PyMouse()
    
    
    def GetInterval():
        while True:
            inter = input("输入连点间隔:")
            try:
                inter = float(inter)
            except ValueError:
                print("连点间隔需要是浮点数")
            else:
                print("成功设置连点间隔")
                break
        return inter
    
    
    press = False
    interval = GetInterval()
    point = time.time()
    
    
    def key(x):
        global press, interval, point
        p = keyboard.KeyboardEvent('down', 28, 'p')
        q = keyboard.KeyboardEvent('down', 28, 'q')
        if x.event_type == 'down' and x.name == p.name:
            press = True
        elif x.name == p.name:
            press = False
        if x.event_type == 'down' and x.name == q.name:
            interval = GetInterval()
        if press and time.time()-point >= interval:
            mouse.click(mouse.position()[0], mouse.position()[1], 1)
            point = time.time()
    
    
    keyboard.hook(key)
    keyboard.wait()
    

    并且,这一连点器已经release,前往GitHub查看

    安装后,就会得到打包后的应用程序:

    成品

    准备工作

    此程序需要用到的两个模块——pymousekeyboard中,keyboard安装比较简单,直接pip即可,但pymouse在pip后还需要做一些工作(否则我也不会单独拿出来说)。

    首先,确保你的Python版本为3.7版本或更低(即不能使用3.8),否则,pymouse无法使用。

    01 修改__ init __.py

    找到pymouse的源文件,如果你不知道它在哪里,可以重新pip,系统会告诉你:

    C:Usersabsoc>pip install pymouse
    Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    Requirement already satisfied: pymouse in c:usersabsocappdatalocalprogramspythonpython37libsite-packages (1.0)
    

    那么,你就可以在c:usersabsocappdatalocalprogramspythonpython37libsite-packages目录下找到pymouse文件夹,并在其中找到__ init __.py文件。

    接下来,修改92行中的windowspymouse.windows
    修改pymouse源文件

    这里用的编辑器是notepads,录制GIF使用的是GifCam

    02 安装pywin32

    如果已经安装pywin32,可以跳过。安装pywin32是为了使用win32api

    03 安装pyHook

    pyHook无法使用pip安装,你需要前往www.lfd.uci.edu下载pyhook的whl文件,这也是为什么不能使用3.8版本的原因——pyhook暂时没有3.8版本:

    安装pyHook

    在文件名中,cp指python版本,win32win_amd64指32位和64位,要根据系统和python版本进行选择。

    这样的话,pymouse的使用就没有什么问题了。

    分析源码

    input的模块不多说,我们只看看这一部分:

    def key(x):
        global press, interval, point
        p = keyboard.KeyboardEvent('down', 28, 'p')
        q = keyboard.KeyboardEvent('down', 28, 'q')
        if x.event_type == 'down' and x.name == p.name:
            press = True
        elif x.name == p.name:
            press = False
        if x.event_type == 'down' and x.name == q.name:
            interval = GetInterval()
        if press and time.time()-point >= interval:
            mouse.click(mouse.position()[0], mouse.position()[1], 1)
            point = time.time()
    
    
    keyboard.hook(key)
    keyboard.wait()
    

    这里面:

    • keyboard.KeyboardEvent指键盘事件,用于和检测到的键盘事件进行匹配(第一个参数指事件类型,第二个参数指按键编号,这个无所谓,如果不知道详细的按键编号,可以随便填,第三个参数是按键名称)
    • x.event_typex.name分别指检测到的键盘事件的类型(按下还是弹起)与按键名
    • mouse.clickmouse.position分别指模拟鼠标点击和获取鼠标位置(元组)
    • keyboard.hook指键盘监听,一旦有按键按下/弹起,就会触发传递的函数
    • keyboard.wait指等待一个指定按键按下,如果没有参数,就会不断监听这句之前的按键

    其逻辑就是,按下p时,flag press设为True,松开p时,flag press设为False,按下q时,重新设置间隔时间。在flag press为True时,如果与上次点击的间隔事件超过了设定值,就再次点击。

    关于打包

    打包的话,首先使用pyinstaller将源码打包成可执行文件:

    pyinstaller F:CodeMouse_ClickerClicker.py
    

    当然,你也可以设定其他参数。

    然后,使用Smart Install Maker将可执行文件打包成安装包,就成了你从release下载的那个样子。

    效果

    程序写好了,最后来看看效果:

    试图给老师点赞

    草(一种植物)

    害,我我我等下次数学课的时候,再试试吧(数学课可以点赞)。

    不过,我肯定是会保证连点器可用的:

    CPS测试

  • 相关阅读:
    ARP 协议
    天梯赛L1 题解
    DNS域名系统
    LeetCode 三角形最小路径和
    sql注入漏洞的利用
    XSS漏洞防御
    忘记密码功能漏洞挖掘
    sql bypass
    Web环境搭建组合
    常用数据库的总结
  • 原文地址:https://www.cnblogs.com/liuxizai/p/13765281.html
Copyright © 2020-2023  润新知