首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Python的快捷方式(.lnk)文件中提取图标?

从Python的快捷方式(.lnk)文件中提取图标?
EN

Stack Overflow用户
提问于 2020-06-18 18:29:45
回答 1查看 744关注 0票数 2

我试图从“开始”菜单文件夹中的所有快捷方式中提取图标。到目前为止,我已经成功地遍历了目录树,我只需要从每个快捷方式中提取图标。我尝试过一些在互联网上建议的方法,但我似乎无法使它充分发挥作用。

方法1:使用一个名为ResourcesExtract的程序通过os.system()从.lnk文件中提取图标。我很快发现这不适用于.lnk文件,只适用于.exe或.dlls。

代码语言:javascript
复制
import os

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

方法2:使用ResourcesExtract从快捷方式的目标中提取图标文件(使用pywin32库可以很容易地获得)。不幸的是,这只适用于一些程序,因为一些指向没有图标的.exes的快捷方式。

代码语言:javascript
复制
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个。

代码语言:javascript
复制
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")

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

我还找到了一种使用.NET框架来实现它的方法,但我不知道如何与python进行接口,甚至不知道它是否能工作。

是否有人知道从Python中的.lnk文件中提取图标的方法,该方法适用于所有快捷方式?

EN

回答 1

Stack Overflow用户

发布于 2020-11-21 09:57:50

代码语言:javascript
复制
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
ShortCut = shell.CreateShortCut('example.lnk')
icon_location = ShortCut.IconLocation

对我来说很管用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62457013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档