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

如何创建仅向单个窗口发送输入的AFK Bot?

实现仅向单个窗口发送输入的AFK Bot

当然可以实现,你的pyautogui脚本失效是因为它是全局模拟输入——必须让目标窗口保持激活状态才能生效,一旦你切换到其他窗口操作,输入就会跑到当前激活的窗口里,而且没法同时正常使用PC。要实现定向窗口输入,得借助Windows API直接给目标窗口发消息,不需要抢占焦点。

核心思路

Windows系统里每个窗口都有唯一的句柄(HWND),我们可以通过窗口标题找到这个句柄,然后用SendMessage函数直接给该窗口发送键盘/鼠标消息,完全不影响其他窗口的正常使用。

所需工具

需要安装pywin32库,它封装了Windows API:

pip install pywin32

示例代码(定向发送WASD移动指令)

下面的代码会持续向指定窗口发送W键按下/松开的消息,同时你可以正常操作其他窗口:

import win32gui
import win32api
import win32con
import time

# 替换成你的游戏窗口标题(注意匹配准确,大小写敏感)
TARGET_WINDOW_TITLE = "你的游戏窗口标题"

# 获取窗口句柄
hwnd = win32gui.FindWindow(None, TARGET_WINDOW_TITLE)
if not hwnd:
    print(f"找不到窗口:{TARGET_WINDOW_TITLE}")
    exit()

# 键盘消息常量
WM_KEYDOWN = 0x0100
WM_KEYUP = 0x0101
VK_W = 0x57  # W键的虚拟键码

def send_key(hwnd, vk_code, press=True):
    """向指定窗口发送按键按下/松开消息"""
    msg = WM_KEYDOWN if press else WM_KEYUP
    win32api.SendMessage(hwnd, msg, vk_code, 0)

try:
    print("AFK Bot已启动,按Ctrl+C停止")
    while True:
        # 模拟按住W键1秒,松开0.5秒(循环移动)
        send_key(hwnd, VK_W, press=True)
        time.sleep(1)
        send_key(hwnd, VK_W, press=False)
        time.sleep(0.5)
except KeyboardInterrupt:
    # 停止时确保松开按键
    send_key(hwnd, VK_W, press=False)
    print("AFK Bot已停止")

针对你原脚本的文本输入改进

如果要实现向指定窗口输入文本(比如你原脚本里的输入"1"并回车),可以用WM_CHAR消息:

import win32gui
import win32api
import win32con
import time

TARGET_WINDOW_TITLE = "Rechner"

hwnd = win32gui.FindWindow(None, TARGET_WINDOW_TITLE)
if not hwnd:
    print(f"找不到窗口:{TARGET_WINDOW_TITLE}")
    exit()

WM_CHAR = 0x0102
VK_RETURN = 0x0D

def send_text(hwnd, text):
    """向指定窗口发送文本"""
    for char in text:
        win32api.SendMessage(hwnd, WM_CHAR, ord(char), 0)
        time.sleep(0.1)

# 发送文本"1"并回车
send_text(hwnd, "1")
win32api.SendMessage(hwnd, WM_KEYDOWN, VK_RETURN, 0)
win32api.SendMessage(hwnd, WM_KEYUP, VK_RETURN, 0)

注意事项

  • 窗口标题必须准确,如果你不知道窗口的精确标题,可以用win32gui.EnumWindows遍历所有窗口获取标题和句柄。
  • 部分游戏用DirectInput处理输入,这种情况下SendMessage可能无效,需要用更底层的SendInput结合窗口钩子,或者使用专门的游戏输入模拟库。
  • 确保你的程序有足够权限,部分游戏可能会拦截非用户手动的输入,可能需要以管理员身份运行脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:10:28