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

使用Python检测Windows应用启动并触发程序运行的实现方法

可行性结论

这个需求完全可实现,不需要修改目标应用的原有代码,依托Windows提供的系统级进程感知能力就能完成触发逻辑。

具体实现方案

你可以根据自己的场景选下面三种方案:

  • 方案1:WMI轮询监控(实现门槛最低)
    核心逻辑是定时遍历系统当前运行的所有进程,匹配到目标应用的进程名、且是第一次检测到该进程时,就执行你写好的Python逻辑。
    先安装依赖库:
    pip install wmi pywin32
    参考实现代码:

    import wmi
    import time
    
    # 替换成你要监控的目标程序进程名,比如微信是WeChat.exe,记事本是notepad.exe
    TARGET_PROCESS_NAME = "notepad.exe"
    # 存已经触发过逻辑的进程ID,避免同一个进程运行期间重复触发
    triggered_pid_set = set()
    
    wmi_conn = wmi.WMI()
    print(f"监控已启动,等待{TARGET_PROCESS_NAME}启动...")
    
    while True:
        # 筛选出当前运行的所有目标进程
        for proc in wmi_conn.Win32_Process(name=TARGET_PROCESS_NAME):
            pid = proc.ProcessId
            if pid not in triggered_pid_set:
                triggered_pid_set.add(pid)
                # 这里替换成你自己的Python业务逻辑
                print(f"检测到目标程序启动,进程ID:{pid},开始执行自定义逻辑")
        # 轮询间隔建议设1-2秒,平衡响应速度和资源占用
        time.sleep(1)
    

    这个方案的优点是代码量小、调试简单、普通用户权限就能跑,缺点是存在1-2秒的检测延迟,适合对响应速度要求不高的个人自用场景。

  • 方案2:WMI事件订阅(实时触发,无轮询开销)
    核心逻辑是直接向Windows WMI服务注册进程创建事件的监听回调,系统在新进程启动的瞬间会主动推送通知,不需要定时扫描进程列表,响应延迟在毫秒级。
    参考实现代码:

    import wmi
    import pythoncom
    
    TARGET_PROCESS_NAME = "notepad.exe"
    
    def process_start_callback(event):
        if event.NewEvent.ProcessName == TARGET_PROCESS_NAME:
            pid = event.NewEvent.ProcessID
            # 这里替换成你自己的Python业务逻辑
            print(f"实时检测到目标程序启动,进程ID:{pid},开始执行自定义逻辑")
    
    if __name__ == "__main__":
        pythoncom.CoInitialize()
        wmi_conn = wmi.WMI()
        # 注册进程启动事件监听器
        proc_watcher = wmi_conn.Win32_ProcessStartTrace.watch_for()
        proc_watcher.on_created = process_start_callback
        print(f"实时监控已启动,等待{TARGET_PROCESS_NAME}启动...")
        # 阻塞等待系统事件
        while True:
            pythoncom.PumpWaitingMessages()
    

    注意这个方案需要用管理员权限运行脚本,优点是实时性好、没有轮询的资源浪费,适合需要快速响应的场景。

  • 方案3:IFEO注册表劫持(无需后台常驻进程)
    核心逻辑是通过Windows内置的镜像文件执行选项配置,让系统启动目标程序前先拉起你写的程序,不需要提前跑监控进程。
    操作步骤:

    1. 用PyInstaller把你的Python脚本打包成独立exe文件,命令参考:pyinstaller -F your_script.py
    2. 打开注册表编辑器,定位到路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
    3. 在该路径下新建项,名称和目标程序的进程名完全一致,比如notepad.exe
    4. 选中新建的项,在右侧窗口新建字符串值,名称设为Debugger,值填你打包好的exe文件的完整绝对路径
      注意:这个方案会直接拦截目标程序的启动流程,你的逻辑执行完如果需要正常打开目标应用,需要主动加代码拉起原目标程序;另外修改IFEO属于敏感操作,大概率会被安全软件告警拦截,仅适合完全可控的个人设备使用。

部署提示

  • 如果用前两种监控方案,需要让监控脚本开机自启:可以把脚本的快捷方式放到当前用户启动文件夹(路径%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup),也可以注册成Windows服务实现后台无窗口运行。
  • 不想运行时弹出黑色控制台窗口的话,可以把脚本后缀改成.pyw,或者打包exe时选择无控制台模式。
  • 如果怕同名进程误触发,可以在检测到进程后,进一步读取进程的可执行文件完整路径做二次校验,确认是你要监控的目标程序再执行逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:09:10