我是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
谢谢
我的问题是,当我运行脚本时,鼠标立即开始单击。我该怎么办?
如果函数成功,则返回值指定键是否 自上次调用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
检查if条件是否为win32api.GetAsyncKeyState(0x01) < 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()