Как получить путь к папке в открытом проводнике на python?

Есть уже открытый проводник Windows с нужной директорией. Как получить путь этой директории в python?


Ответы (1 шт):

Автор решения: Amgarak

Задача показалась интересной, взял код отсюда и как сумел адаптировал его на питон.

import pygetwindow as gw
import win32gui
import comtypes.client
import os

# Функция для получения пути текущей папки в проводнике Windows
def get_explorer_window_path(MyHwnd):
    try:
        shell_app = comtypes.client.CreateObject("Shell.Application")
        windows = shell_app.Windows()
        for i in range(windows.Count):
            explorer_window = windows.Item(i)
            # Проверяем, соответствует ли текущее окно переданному дескриптору окна
            if explorer_window is None:
                continue
            if explorer_window.hwnd == MyHwnd:
                # Получаем путь к исполняемому файлу проводника
                path = os.path.basename(explorer_window.FullName)
                # Если это explorer.exe, то получаем путь текущей папки в проводнике
                if path.lower() == "explorer.exe":
                    explore_path = explorer_window.Document.Folder.Items().Item().Path
                    return explore_path
    finally:
        shell_app = None

# Получаем список всех открытых окон
windows = gw.getAllWindows()
# Проходимся по каждому окну
for window in windows:
    # Если класс окна - "CabinetWClass", это окно проводника
    if win32gui.GetClassName(window._hWnd) == "CabinetWClass":
        # Получаем дескриптор окна
        hwnd = window._hWnd
        # Получаем текущий путь к папке в проводнике
        current_path = get_explorer_window_path(hwnd)
        if current_path:
            print("Текущий путь к папке в проводнике:", current_path)
        else:
            print("Не удалось получить текущий путь к папке в проводнике.")

У меня открыты 2 проводника, вывод в консоль:

Текущий путь к папке в проводнике: C:\Users\Amgarak\Desktop\Документы
Текущий путь к папке в проводнике: C:\Users\Amgarak\Desktop\Amgarak
→ Ссылка