在模拟点击会导致自动点击器自动关闭的情况下,如何控制它?

人工智能 2026-07-11

我想做一个可以通过 = 开关的自动点击器;只有当我按住左键时,自动点击器才会被激活。

不过,使用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()

解决方案

使用 SetWindowsHookExWH_MOUSE_LL 组合。然后测试 MSLLHOOKSTRUCT.flags & LLMHF_INJECTED,以检查事件是否被注入。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章