在模拟点击会导致自动点击器自动关闭的情况下,如何控制它?
我想做一个可以通过 = 开关的自动点击器;只有当我按住左键时,自动点击器才会被激活。
不过,使用pynput模拟的点击会被检测为我松开了鼠标的左键,,从而导致自动点击器停止。AI告诉我不要用pynput来监听,改用 ctypes.windll.user32.GetAsyncKeyState(0x01) & 0x8000 != 0 来读取硬件鼠标状态,但仍然不起作用。我把所有相关的办法分别尝试过,最终我认为是自动点击器在左键检测上出了问题。
我的代码哪里出了问题?
import time
import threading
import ctypes
from pynput import mouse, keyboard
toggle = keyboard.Key.f6
clicking = False
rat = mouse.Controller()
def clicker():
while True:
if clicking == True and ctypes.windll.user32.GetAsyncKeyState(0x01) & 0x8000 != 0:
rat.click(mouse.Button.left, 1)
time.sleep(0.01)
else:
time.sleep(0.005)
def toggled(key):
global clicking
if key == toggle:
clicking = not clicking
print("Autoclicker:", clicking)
clonk = threading.Thread(target=clicker, daemon=True)
clonk.start()
with keyboard.Listener(on_press=toggled) as key:
key.join()
解决方案
使用 SetWindowsHookEx 与 WH_MOUSE_LL 组合。然后测试 MSLLHOOKSTRUCT.flags & LLMHF_INJECTED,以检查事件是否被注入。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。