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

如何获取Windows系统中已打开文件资源管理器的路径

获取Windows已打开文件资源管理器的路径

解决方案依赖

使用pywin32库调用Windows API实现,先执行安装命令:

pip install pywin32

实现代码

import win32gui
import win32com.client
import urllib.parse

def get_open_explorer_paths():
    explorer_paths = []
    shell = win32com.client.Dispatch("Shell.Application")
    # 遍历所有资源管理器窗口
    for window in shell.Windows():
        # 过滤出文件资源管理器窗口(排除IE等其他窗口)
        if window.Name == "文件资源管理器":
            # 获取LocationURL并转换为本地路径
            url = window.LocationURL
            if url.startswith("file:///"):
                # 解码URL编码的路径,处理特殊字符
                path = urllib.parse.unquote(url[8:]).replace('/', '\\')
                explorer_paths.append(path)
    return explorer_paths

# 示例调用
if __name__ == "__main__":
    paths = get_open_explorer_paths()
    if paths:
        print("已打开的文件资源管理器路径:")
        for idx, path in enumerate(paths, 1):
            print(f"{idx}. {path}")
    else:
        print("未找到打开的文件资源管理器窗口")

代码说明

  1. Shell.Application对象:通过Windows Shell COM接口获取所有打开的资源管理器实例。
  2. 窗口过滤:通过窗口名称"文件资源管理器"筛选目标窗口,避免误识别IE等使用相同Shell接口的程序。
  3. 路径转换:将LocationURL返回的file:///格式URL解码为本地Windows路径,处理URL编码的特殊字符(如空格、中文)。

关于文件对话框的补充说明

文件对话框(如打开/保存对话框)的获取难度更高,因为这类窗口属于父程序的子窗口,没有统一的Shell接口可直接获取路径。可以尝试以下思路:

  • 枚举所有窗口,找到类名为#32770的对话框窗口。
  • 通过Windows API向对话框发送消息,获取编辑框中的路径内容。
  • 该方法需要处理不同程序对话框的控件结构差异,实现复杂度较高,若仅针对系统默认对话框,可进一步研究GetDlgItemText等API的使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:18:22