我试图从“开始”菜单文件夹中的所有快捷方式中提取图标。到目前为止,我已经成功地遍历了目录树,我只需要从每个快捷方式中提取图标。我尝试过一些在互联网上建议的方法,但我似乎无法使它充分发挥作用。
方法1:使用一个名为ResourcesExtract的程序通过os.system()从.lnk文件中提取图标。我很快发现这不适用于.lnk文件,只适用于.exe或.dlls。
import os
os.system(f"resourcesextract.exe /source {shortcut}")方法2:使用ResourcesExtract从快捷方式的目标中提取图标文件(使用pywin32库可以很容易地获得)。不幸的是,这只适用于一些程序,因为一些指向没有图标的.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获取图标目录。这只适用于我需要的300个快捷键中的120个。
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
icon, status = str(shell.CreateShortCut(shortcut).IconLocation).split(",")我还找到了一种使用.NET框架来实现它的方法,但我不知道如何与python进行接口,甚至不知道它是否能工作。
是否有人知道从Python中的.lnk文件中提取图标的方法,该方法适用于所有快捷方式?
发布于 2020-11-21 09:57:50
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
ShortCut = shell.CreateShortCut('example.lnk')
icon_location = ShortCut.IconLocation对我来说很管用。
https://stackoverflow.com/questions/62457013
复制相似问题