Извлечь значок из файла ярлыка (.lnk) в Python? - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь извлечь значки из всех ярлыков в папке меню «Пуск». Пока мне удалось пройтись по дереву каталогов, и мне просто нужно что-то, чтобы извлечь значок из каждого ярлыка. Я пробовал несколько методов, предложенных для inte rnet, но я не могу заставить его работать полностью.

Метод 1: Использование программы с именем ResourcesExtract через os.system () для извлечения значка из файла .lnk. Вскоре я обнаружил, что это не работает для файлов .lnk, только для .exe или .dll.

import os

os.system(f"resourcesextract.exe /source {shortcut}")

Метод 2: Извлечение файла значка из целей ярлыков ( который можно довольно легко получить с помощью библиотеки pywin32) с помощью ResourcesExtract. К сожалению, это работает только для некоторых программ, поскольку некоторые ярлыки указывают на .exes без значков.

import os
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")

target = shell.CreateShortCut(shortcut).TargetPath
os.system(f"resourcesextract.exe /source {target}")

Метод 3: Использование pywin32 для получения каталога значков. Это работает только примерно для 120 из 300 ярлыков, над которыми мне нужно работать.

import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")

icon, status = str(shell.CreateShortCut(shortcut).IconLocation).split(",")

Я также нашел способ сделать это с помощью фреймворка. NET, но я не знаю, как чтобы связать это с python или даже если он будет работать.


Кто-нибудь знает о способе извлечения значков из файлов .lnk в Python, который работает со всеми ярлыками?

...