我正在尝试从“开始菜单”文件夹中的所有快捷方式提取图标。到目前为止,我已经成功遍历了目录树,现在需要一些方法来提取每个快捷方式的图标。我尝试了互联网上建议的几种方法,但似乎都无法完全实现。
方法1:使用名为ResourcesExtract的程序通过os.system()从.lnk文件中提取图标。但很快我发现这对.lnk文件无效,只适用于.exe或.dll文件。
import os
os.system(f"resourcesextract.exe /source {shortcut}")
方法二:使用pywin32库相对容易地获取快捷方式的目标,然后使用ResourcesExtract从目标中提取图标文件。不幸的是,由于某些指向没有图标的.exe文件的快捷方式,这种方法只适用于部分程序。
import os
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
target = shell.CreateShortCut(shortcut).TargetPath
os.system(f"resourcesextract.exe /source {target}")
方法三:使用pywin32获取图标目录。这仅适用于我需要它工作的约120个快捷方式中的大约300个。
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
icon, status = str(shell.CreateShortCut(shortcut).IconLocation).split(",")
我也找到了一种使用.NET框架的方法,但我不知道如何将其与Python接口起来,或者它是否会起作用。
有没有人知道一种从所有快捷方式中提取.lnk文件图标的在Python上可行的方法?