如何取得系统图标,如URL快捷方式

问题的提出:为了取得URL快捷方式的图标。

 

如收藏夹中的CSDN.url,用记事本打开如下:

[InternetShortcut]
URL=http://community.csdn.net/
IDList=
IconFile=http://community.csdn.net/favicon.ico
IconIndex=1

 

一旦访问过这个网页,再回到收藏夹目录看这个URL文件,即可看到这个文件的图标已经变成CSDN的图标了。理论上来说,这个图标一定在硬盘的某个角落,否则是不会显示的。但从上述文件内容来看,http://community.csdn.net/favicon.ico这个ICO或对应的ICO保存在什么地方呢?我找了下临时文件夹,无果。于是只得寻求其他办法。

 

又想到既然是快捷方式,用IShellLink接口如何呢?用IShellLink的GetIconLocation是否可行呢?我没有验证,但这即使能成功,又涉及到SHELL扩展编程中的一些知识,比如获取PIDL等问题,代码略显繁琐。

 

最后想到用系统图标,即从系统图像列表中取得。

 

大致流程如下:

1、用SHGetFileInfo获得URL文件的SHFILEINFO结构,其中SHGetFileInfo的uFlags标志使用SHGFI_SYSICONINDEX;

2、SHGetFileInfo的返回值既是系统图形列表(imagelist)的句柄;

3、SHFILEINFO结构的iIcon即是图标在列表中的索引;

4、用ImageList_GetIcon即可列表中取得图标的句柄(至此基本大功告成了);

5、如果需要进一步获得直观的StdPicture对象,还需使用OleCreatePictureIndirect。

 

 

在此抛砖引玉,不知道大家是否有更好的办法?

桌面快捷方式是一个特殊的文件,它包含了目标程序的路径、运行命令以及其他相关信息,使得用户可以直接从桌面启动该程序或执行特定任务。当您右击桌面上的某个图标并选择“打开方式”时,实际上就是查看了这个快捷方式所指向的具体文档。 ### 开放文档的基本步骤 1. **创建快捷方式**:通常情况下,快捷方式是由系统自动创建的,例如安装新软件时,默认会在桌面上生成对应的应用程序图标;也可以手动创建,比如通过复制现有文件夹或应用程序的完整路径到文本编辑器中,然后保存为 `.lnk` 或 `.url` 文件,再将此文件拖放到桌面。 2. **查看快捷方式属性**:双击快捷方式图标后,如果想查看其实际指向的文档或程序,可以按 `Ctrl + Shift + I` 打开开发者工具(适用于某些浏览器),或直接点击快捷方式右键菜单中的“属性”。在弹出的窗口中,你可以看到“目标”字段显示的是实际要运行的程序路径。 ### 使用快捷方式的优势 1. **方便访问**:提供了一种快速访问常用程序或文档的方式,无需每次都查找程序的位置。 2. **节省资源**:减少了每次启动应用时加载所需数据的时间,尤其是对于大型应用程序而言。 3. **统一界面**:无论是使用电脑还是移动设备,用户可以以类似的方式操作相同的程序,提高了用户体验的一致性。 ### 关注点与常见问题 1. **兼容性问题**:不同操作系统之间创建的快捷方式可能无法在其他系统上正常工作,这取决于文件的扩展名以及包含的路径信息是否兼容。 2. **安全性风险**:不应随便信任未知来源的快捷方式,因为它们可能会链接到恶意软件或病毒,导致计算机安全问题。 3. **维护与更新**:随着程序的升级或删除,旧的快捷方式可能会变得无效,需要定期检查和更新。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值