繁体   English   中英

Python 检查鼠标左键是否被按住?

[英]Python check if Left Mouse Button is being held?

我对 Python 很陌生,我想做一种 Autoclicker,当我按住鼠标左键时,它会每 0.1 秒点击一次。 我的问题是,当我运行我的脚本时,我的鼠标立即开始点击。 我应该怎么办?:

import win32api
import time
from pynput.mouse import Button, Controller
mouse = Controller()

while True:

    if win32api.GetAsyncKeyState(0x01):
        mouse.click(Button.left, 1)
        time.sleep(0.1)
    else:
        pass

谢谢

检查 if 条件中是否win32api.GetAsyncKeyState(0x01) < 0

我的问题是,当我运行我的脚本时,我的鼠标立即开始点击。 我应该怎么办?

如果 function 成功,则返回值指定自上次调用 GetAsyncKeyState 以来是否按下了键,以及该键当前是向上还是向下。 如果设置了最高有效位,则键按下,如果设置了最低有效位,则在上一次调用 GetAsyncKeyState 后按下了键。

您应该改用win32api.GetAsyncKeyState(0x01)&0x8000

现在,它唯一要做的就是单击一次,这使我的单击成为双击。

因为GetAsyncKeyState检测到鼠标左键的键state。 当您按下鼠标左键时,调用了click function, click将实现鼠标左键按下和释放两个动作。 然后在while循环的地方, GetAsyncKeyState会检测到释放动作,这就是为什么双击后就停止了。

建议你设置鼠标左键启动,鼠标右键停止。

代码示例:

import win32api
import time
from pynput.mouse import Button, Controller
mouse = Controller()

while True:

    if (win32api.GetAsyncKeyState(0x01)&0x8000 > 0):
        flag = True
        while flag == True:
               mouse.click(Button.left, 1)
               time.sleep(0.1)
               if (win32api.GetAsyncKeyState(0x02)&0x8000 > 0):
                   flag = False
    else:
        pass

我使它与mouse5一起工作!

import win32api
import win32con
import time
from pynput.mouse import Button, Controller
mouse = Controller()

def ac():
    if keystate < 0:
        mouse.click(Button.left, 1)
        time.sleep(0.1)
    else:
        pass

while True:
    keystate = win32api.GetAsyncKeyState(0x06)
    ac()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM