You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用AHK实现窗口点击无响应:点击未被识别

解决Python调用AHK库无鼠标移动点击指定窗口无效的问题

问题根源

你当前代码中win.click(myK.get_mouse_position())存在两个关键问题:

  • get_mouse_position()返回的是屏幕全局坐标,但win.click()默认接收的是窗口内的相对坐标,直接传入会导致点击位置偏移,甚至不在窗口范围内。
  • 默认的click方法本质还是模拟物理鼠标移动后点击,不符合你「不移动鼠标」的需求。

可行解决方案

方案1:转换屏幕坐标为窗口相对坐标(适合基于当前鼠标位置点击的场景)

先将屏幕坐标转换为目标窗口的相对坐标,再执行点击,同时阻止鼠标实际移动:

from ahk import AHK
import time

myK = AHK()

time.sleep(2)
win = myK.active_window

a = 0
while a < 3:
    time.sleep(1)
    screen_x, screen_y = myK.get_mouse_position()
    print(f"屏幕坐标: ({screen_x}, {screen_y})")
    # 转换为窗口相对坐标
    client_x, client_y = win.screen_to_client(screen_x, screen_y)
    print(f"窗口相对坐标: ({client_x}, {client_y})")
    # 使用窗口相对坐标点击,block_input避免鼠标实际移动
    win.click(client_x, client_y, block_input=True)
    a += 1

方案2:使用control_click实现无鼠标移动点击(推荐)

AHK的ControlClick功能可以直接向指定窗口发送点击事件,无需移动物理鼠标,对应Python ahk库的control_click方法:

from ahk import AHK
import time

myK = AHK()

time.sleep(2)
win = myK.active_window

a = 0
while a < 3:
    time.sleep(1)
    # 传入窗口内的相对坐标(示例为窗口左上角(10,10)位置)
    win.control_click(x=10, y=10)
    # 若需基于当前鼠标屏幕坐标,先转换为窗口相对坐标再传入
    # screen_x, screen_y = myK.get_mouse_position()
    # client_x, client_y = win.screen_to_client(screen_x, screen_y)
    # win.control_click(x=client_x, y=client_y)
    a += 1

额外说明

  • 如果目标窗口有特定控件,可指定控件类名或实例给control_click实现精准点击(例如win.control_click(control="Edit1"))。
  • 确保目标窗口在点击时处于激活或可见状态,部分后台窗口可能需要添加detect_hidden_windows=True参数来支持。

内容的提问来源于stack exchange,提问作者user3518144

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:57:42