从Windows .lnk(快捷方式)文件中提取图标
发布时间:2020-12-14 04:35:28 所属栏目:Windows 来源:网络整理
导读:我需要从 Windows快捷方式(.lnk)文件中提取图标(或找到图标文件,如果它只是由快捷方式指向). 我不是要求从exe,dll等中提取图标.当我运行安装程序时,会创建有问题的快捷方式.并且快捷方式显示的图标不包含在快捷方式指向的.exe中.据推测,该图标嵌入在.lnk文件
我需要从
Windows快捷方式(.lnk)文件中提取图标(或找到图标文件,如果它只是由快捷方式指向).
我不是要求从exe,dll等中提取图标.当我运行安装程序时,会创建有问题的快捷方式.并且快捷方式显示的图标不包含在快捷方式指向的.exe中.据推测,该图标嵌入在.lnk文件中,或者.lnk文件包含指向此图标所在位置的指针.但是我找到的所有工具都没有解决这个问题 – 他们都只是去了.exe. 非常感谢!
该主题提供了有关
data contained in a .lnk file的有趣信息
sSHGetFileInfoss功能应该能够提取图标文件. 记录here,用于lnk文件: Path2Link := 'C:StuffTBear S Saver.lnk'; SHGetFileInfo(PChar(Path2Link),ShInfo1,SizeOf(TSHFILEINFO),SHGFI_ICON); // this ShInfo1.hIcon will have the Icon Handle for the Link Icon with // the small ShortCut arrow added} 从第一个链接开始,您可以在c#中构建这样的实用程序,您可以在其中声明此函数: [DllImport("shell32.dll")] public static extern IntPtr SHGetFileInfo( string pszPath,uint dwFileAttributes,ref SHFILEINFO psfi,uint cbSizeFileInfo,uint uFlags); 您还可以在autoit script language中构建一个实用程序,您可以在其中使用如下所示的函数: Func _ShellGetAssocIcon(Const $szFile,Const $IconFlags = 0) Local $tFileInfo = DllStructCreate($tagSHFILEINFO) If @error Then Return SetError(1,@extended,0) EndIf Local $Ret = DllCall("shell32.dll","int","SHGetFileInfo","str",$szFile,"dword",_ "ptr",DllStructGetPtr($tFileInfo),"uint",DllStructGetSize($tFileInfo),BitOr($SHGFI_ICON,$IconFlags)) MsgBox(0,@error) Return DllStructGetData($tFileInfo,"hIcon") EndFunc (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Win10和Win7共享打印机设置方法
- 获取当前线程ID在Windows 8与C#
- windows-server-2012 – 在Windows Server 2012上
- windows-runtime – 如何从winrt访问环境变量
- Windows – TextPad和Unicode:完全支持?
- winrt-xaml – XAML中的Metro(Windows应用商店应
- windows-installer – Msiexec:在安装失败时自动
- windows – 文本’Extent’属性不包含正确的大小
- 在Windows上并行写入Java
- windows-8 – 扩展Windows 8 Messaging Hub
热点阅读