美文网首页程序员
「PyMouse」做个连点器给老师点赞

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

作者: Stray_Wanderer | 来源:发表于2020-04-29 20:09 被阅读0次

源码

文章开头先上成品(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:\Users\absoc>pip install pymouse
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pymouse in c:\users\absoc\appdata\local\programs\python\python37\lib\site-packages (1.0)

那么,你就可以在c:\users\absoc\appdata\local\programs\python\python37\lib\site-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:\Code\Mouse_Clicker\Clicker.py

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

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

效果

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

试图给老师点赞

草(一种植物)

日(一种行星)

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

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

CPS测试

花絮

又作了一波死,这回上课把摄像头改成了这样:

lbwnb

兄弟萌把lbwnb打在公屏上!



在我的博客上查看本文

相关文章

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

    源码 文章开头先上成品(Command Line Mouse Clicker): 并且,这一连点器已经releas...

  • 给老师点赞!

    听了老师的精彩分享,同学们是不是觉得顿时充满了能量? 给老师点赞,为老师加油! 期待老师的下一次精彩课程! 点击下...

  • 做个测验

    做个测验,看看给大佬点赞怎么样。

  • 给普老师点赞

    在王老师的朋友圈里发现一个读书会,我也加入进去,今天晚上与一个山东德州的赵老师合作组团进读书会。 晚上8点后,看到...

  • 20190219给杨老师点赞

    今天中午小言同学到家就迫不及待地告诉我,今天的数学课很好玩儿。杨老师虽然是第一次给他们上课,但是居然能叫出他们每个...

  • 给 点赞

    窗外的小雨淅淅沥沥地下着,轻轻地、柔柔地。那天起初是阳光明媚,到了下午却突然变成乌云,天空变得一片灰蒙蒙的...

  • 你的点赞为哪般

    朋友圈点赞,现在比比皆是,给晒图秀娃点赞,给美食旅行点赞,给个人原创点赞,给转发公众号美文点赞,点赞礼尚往来,仿佛...

  • 教你给同一篇文章再次点赞

    很多朋友只知道给自己喜欢的文章点赞,却很少有人知道还可以给同一篇文章重复点赞。 有时候简友们来我的空间,一连点赞了...

  • 广正口味

    “老师,给今天的菜点赞。来再送个暑片给老师。"广正说,后面跟着轩轩也说"我也要点个赞哦,很棒棒。" 轩轩点赞不意外...

  • 点赞的机会都没有

    一个字都不留下的话,连点赞的机会都没有,我也没有给别人点赞的机会。 我发现点赞其实挺有趣的。以前吧,不知道怎么点,...

网友评论

    本文标题:「PyMouse」做个连点器给老师点赞

    本文链接:https://www.haomeiwen.com/subject/sdgnwhtx.html