получить выбранные файлы на рабочем столе в Windows (7) - PullRequest
0 голосов
/ 01 ноября 2018

Может кто-нибудь сказать мне, как я могу получить все выбранные файлы на рабочем столе Windowsd в Python? Я искал способ сделать это, и я не могу никого найти. Я нашел только один для C #, но я не пишу код на C #, поэтому я даже не знаю, работает ли он: Получить список выбранных файлов с рабочего стола Windows (если кто-то это понимает и может объясните / преобразуйте это, это тоже будет оценено). Я нашел что-то очень близкое к этому, но я могу только заставить получить количество выбранных файлов, а не их путь, как мне хотелось бы:

import ctypes
from commctrl import LVM_GETITEMCOUNT,LVM_GETSELECTEDCOUNT
#The LVM_GETITEMCOUNT came with the script, I got the other one from Microsoft documentation about SendMessage(), and both are near, but none returns the paths, only numbers
import pywintypes
import win32gui

GetShellWindow = ctypes.windll.user32.GetShellWindow

def get_desktop():
    """Get the window of the icons, the desktop window contains this window"""
    shell_window = GetShellWindow()
    shell_dll_defview = win32gui.FindWindowEx(shell_window, 0, "SHELLDLL_DefView", "")
    if shell_dll_defview == 0:
        sys_listview_container = []
        try:
            win32gui.EnumWindows(_callback, sys_listview_container)
        except pywintypes.error as e:
            if e.winerror != 0:
                raise
        sys_listview = sys_listview_container[0]
    else:
        sys_listview = win32gui.FindWindowEx(shell_dll_defview, 0, "SysListView32", "FolderView")
    return sys_listview

def _callback(hwnd, extra):
    class_name = win32gui.GetClassName(hwnd)
    if class_name == "WorkerW":
        child = win32gui.FindWindowEx(hwnd, 0, "SHELLDLL_DefView", "")
        if child != 0:
            sys_listview = win32gui.FindWindowEx(child, 0, "SysListView32", "FolderView")
            extra.append(sys_listview)
            return False
    return True

def get_item_count(window):
    return win32gui.SendMessage(window, LVM_GETSELECTEDCOUNT)

desktop = get_desktop()
print(get_item_count(desktop))

Я искал команды, которые можно отправить в окно, но я не нашел никого, кто мог бы получить путь к выбранным элементам (может быть, я пропустил один?).

Я нашел способ получения выбранных файлов из Windows Explorer, но теперь с рабочего стола: https://stackoverflow.com/a/21250927/8228163.

Любая помощь (с любой Windows, предпочтительно 7) очень ценится. Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...