用 Win32 API 建立桌面快捷方式的一种方法

初次接触这个问题,经过查询得知:API提供了一个COM接口调用, IShellLink 将允许你建立一个快捷方式,要在桌面建立一个快捷方式,只要把这个快捷方式保存到桌面目录就可以了。可是这需要了解这个COM接口的调用方法,以及一些API的使用问题,如CreateShortCut,很繁琐,一个小时下来也没有结果。

我放弃了上面的想法,开始研究桌面快捷方式,通过对批处理建立的快捷方式的研究,发现当你在桌面建立一个对应的 .url 的文件即可,windows会将其解析为快捷方式。

假设你的目标程序为 D:\IDEasm.exe,下面为其创建桌面快捷方式。

第一个问题就是:.url 文件的格式

对应的 IDEasm.url 文件内容及格式如下,(符号 // 后为注释部分,不在文件中)

---------------------------------------------

[InternetShortcut]                                      //标志                  
URL=D:\IDEasm.exe                                 //目标程序全路径文件名
IconFile=D:\IDEasm.exe                            //以下设置IDEasm.url文件的图标
IconIndex=0 

---------------------------------------------

写完后保存,此文件会自动被系统解析成快捷方式的样子。将上面的文件保存在桌面后,就相当于在桌面建立了快捷方式。

这样我们只要在程序中用 CreateFile 创建这个 .url 文件就行了,唯一需要改动的只是目标程序的全路径文件名(这可以由程序本身获得)。

第二个问题出现了:获得桌面的路径名。

  1、判断系统盘,可以通过 GetWindowsDirectory 来提取。比如 C:\

  2、由上面的结果拼接出桌面的全路径名 'C:\' + 'Documents and Settings\All Users\桌面'

综上,在得到桌面的全路径名后,再拼接出我们要建立的 .url文件的全路径文件名即可。最后用 CreateFile 来创建这个文件 (即:C:\Documents and Settings\All Users\桌面\IDEasm.url ),再用WriteFile将上面虚线框中的内容写入此文件即可.

原文地址:https://www.cnblogs.com/feng801/p/1818886.html