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

如何实现仅当指定程序激活时通过快捷键运行Python脚本

实现Windows程序关联快捷键触发Python脚本的通用方法

方案一:使用AutoHotkey(AHK)

AHK是Windows平台专门用于自动化操作和快捷键定制的工具,能轻松实现窗口检测、快捷键绑定逻辑。

  1. 安装AutoHotkey(官网下载安装即可)
  2. 编写AHK脚本,示例如下:
; 替换为目标程序的窗口标题(可通过AHK自带的Window Spy工具获取)
TargetWindowTitle := "目标程序窗口标题"

; 绑定快捷键示例:Ctrl+Shift+F10,可自行修改
^+F10::
    ; 检测目标程序窗口是否存在
    IfWinExist, %TargetWindowTitle%
    {
        ; 运行Python脚本,替换为你的脚本实际路径
        Run, python "C:\your\script\path\script.py"
        ; 等待脚本执行完成(根据脚本耗时调整Sleep时长,或用ProcessWait等待进程结束)
        Sleep, 3000
        ; 关闭目标程序窗口
        WinClose, %TargetWindowTitle%
    }
Return
  1. 保存脚本为.ahk后缀,双击运行后,只有目标程序打开时,按下绑定的快捷键才会触发脚本运行,完成后自动关闭程序。

方案二:纯Python实现(依赖pywin32库)

如果不想额外安装工具,可以用Python结合pywin32实现全局快捷键注册和窗口检测:

  1. 安装pywin32:pip install pywin32
  2. 编写Python脚本,示例逻辑:
import win32api
import win32con
import win32gui
import subprocess
import time

# 目标程序的窗口标题
TARGET_WINDOW_TITLE = "目标程序窗口标题"
# 业务脚本路径
PY_SCRIPT_PATH = r"C:\your\script\path\script.py"
# 全局快捷键:Ctrl+Shift+F10(可自行修改键码)
HOTKEY_ID = 1
MODIFIERS = win32con.MOD_CONTROL | win32con.MOD_SHIFT
KEY = win32con.VK_F10

def get_target_window_handle():
    return win32gui.FindWindow(None, TARGET_WINDOW_TITLE)

def hotkey_callback(hwnd, msg, wparam, lparam):
    if wparam == HOTKEY_ID:
        target_hwnd = get_target_window_handle()
        if target_hwnd:
            # 运行业务Python脚本
            subprocess.run(["python", PY_SCRIPT_PATH], check=True)
            # 等待脚本执行完成(或改用subprocess.wait()等待进程结束)
            time.sleep(3)
            # 发送关闭信号给目标程序
            win32gui.PostMessage(target_hwnd, win32con.WM_CLOSE, 0, 0)
    return True

# 注册全局快捷键
win32api.RegisterHotKey(None, HOTKEY_ID, MODIFIERS, KEY)

# 消息循环监听快捷键
try:
    msg = win32gui.GetMessage(None, 0, 0)
    while msg:
        if msg.message == win32con.WM_HOTKEY:
            hotkey_callback(None, msg.message, msg.wParam, msg.lParam)
        win32gui.TranslateMessage(msg)
        win32gui.DispatchMessage(msg)
        msg = win32gui.GetMessage(None, 0, 0)
finally:
    win32api.UnregisterHotKey(None, HOTKEY_ID)
  1. 运行这个Python脚本,它会在后台监听快捷键,只有目标程序窗口存在时,按下快捷键才会触发你的业务脚本,执行完成后关闭目标程序。

注意事项

  • 窗口标题要准确,如果目标程序窗口标题有动态变化部分,AHK中可以用IfWinExist, ahk_exe 程序.exe匹配进程,Python中可通过win32process枚举进程来查找对应窗口。
  • 脚本执行等待时间可根据实际情况调整,或改为等待脚本进程结束(比如subprocess的wait()方法、AHK的ProcessWait命令)。
  • 全局快捷键尽量选择不与系统或目标程序冲突的组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 08:44:51