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

如何获取Windows指定坐标窗口的.exe路径等静态标识符以稳定识别程序?

解决方案:静态识别窗口所属程序的方法

获取窗口对应的.exe路径(完全可行)

你需求的通过窗口获取对应.exe路径的方案是可行的,且完全符合你“仅移动可执行文件时才会变化”的静态识别要求。可以通过窗口句柄→进程ID→进程exe路径的流程实现,以下是Python环境下的具体实现:

首先安装依赖库:

pip install pywin32 psutil

核心代码示例:

import win32gui
import win32process
import psutil

def get_window_exe_path(hwnd):
    # 从窗口句柄获取对应进程ID
    pid = win32process.GetWindowThreadProcessId(hwnd)[1]
    if pid == 0:
        return None
    try:
        # 通过PID获取进程对象,提取exe路径
        process = psutil.Process(pid)
        return process.exe()
    except (psutil.NoSuchProcess, psutil.AccessDenied):
        # 处理无权限或进程已结束的情况
        return None

# 示例:获取鼠标当前指向窗口的exe路径
def get_mouse_target_window_exe():
    cursor_pos = win32gui.GetCursorPos()
    target_hwnd = win32gui.WindowFromPoint(cursor_pos)
    return get_window_exe_path(target_hwnd)

# 测试调用
print(get_mouse_target_window_exe())

该方法的稳定性很高,exe路径仅在程序文件被移动、重装或替换时才会改变,完全满足你的静态识别需求。

其他静态识别程序的备选方法

如果遇到少数特殊场景(如绿色版程序被复制到多个路径),还可以使用以下静态标识:

  • 程序版本信息(产品名/公司名):多数正规软件的exe文件会包含固定的产品名称、公司名称等版本信息,不会随路径或运行状态变化。通过psutil可以直接读取:

    def get_process_static_info(pid):
        try:
            process = psutil.Process(pid)
            version_data = process.version_info()
            return {
                "产品名称": version_data.get("ProductName"),
                "公司名称": version_data.get("CompanyName")
            }
        except (psutil.NoSuchProcess, psutil.AccessDenied):
            return None
    
  • 窗口类名:很多程序的窗口类名是固定的,比如Chrome浏览器的主窗口类名为Chrome_WidgetWin_1,系统记事本为Notepad。可以通过win32gui直接获取:

    cursor_pos = win32gui.GetCursorPos()
    target_hwnd = win32gui.WindowFromPoint(cursor_pos)
    window_class = win32gui.GetClassName(target_hwnd)
    print(window_class)
    
  • 数字签名信息:对于经过正规数字签名的软件,其exe文件的签名发行人、序列号等信息是固定的,可作为唯一标识。不过实现相对复杂,需要调用Windows系统API解析签名内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:33:24