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

问题描述 投票:-1回答:3

我是Python的新手,我想做一种自动点击器,当我按下鼠标左键时,它会每隔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

谢谢

python winapi mouseclick-event pynput onmouseclick
3个回答
0
投票

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

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

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

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

因为GetAsyncKeyState检测到鼠标左键的键状态。当您按下鼠标左键时,会调用click功能,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

0
投票

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


0
投票

我使它与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()
© www.soinside.com 2019 - 2024. All rights reserved.