COM创建快捷方式易语言源码
.版本 2
.子程序 创建快捷方式_, 逻辑型, 公开
.参数 快捷方式文件名, 文本型, , 如果文件名不包含后缀,将自动加上“.lnk”后缀名。
.参数 指向文件路径, 文本型, , 本参数提供快捷方式所指向文件的全路径名。
.参数 备注信息, 文本型, 可空, 本参数提供对应此快捷方式的描述文本信息,如果被省略,默认为空文本。
.参数 命令行文本, 文本型, 可空, 本参数提供启动快捷方式指向文件时附加的命令行文本,如果被省略,默认为空文本。
.参数 工作目录, 文本型, 可空, 本参数提供启动快捷方式指向文件时所需预置的工作目录,如果被省略,默认为空文本。
.局部变量 ppv1, 整数型
.局部变量 ppv2, 整数型
.局部变量 pwStr, 字节集
.局部变量 nRet, 整数型
.局部变量 sFileName, 文本型
.局部变量 ppid, 整数型
.局部变量 ShowCmd, 整数型
CoInitialize (0)
CoCreateInstance ({ 1, 20, 2, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 70 }, 0, #CLSCTX_INPROC_SERVER, { 238, 20, 2, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 70 }, ppv1)
.如果真 (ppv1 ≠ 0)
QueryInterface (ppv1, 取变量数据地址_字节集 ({ 11, 1, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 70 }), ppv2)
.如果真 (ppv2 ≠ 0)
.如果真 (是否为空 (命令行文本) = 假)
SetArguments (ppv1, 取变量数据地址_文本型 (命令行文本))
.如果真结束
.如果真 (是否为空 (备注信息) = 假)
SetDescription (ppv1, 取变量数据地址_文本型 (备注信息))
.如果真结束
.如果真 (是否为空 (工作目录) = 假)
SetWorkingDirectory (ppv1, 取变量数据地址_文本型 (工作目录))
.如果真结束
SetPath (ppv1, 取变量数据地址_文本型 (指向文件路径))
sFileName = 快捷方式文件名
.如果 (lstrlen (sFileName) > 4)
.如果真 (lstrcmpi (取变量数据地址_文本型 (sFileName) + lstrlen (sFileName) - 4, 取变量数据地址_文本型 (“.lnk”)) ≠ 0)
sFileName = sFileName + “.lnk”
.如果真结束
.否则
sFileName = sFileName + “.lnk”
.如果结束
pwStr = Ansi转Unicode (sFileName)
nRet = Save (ppv2, 取变量数据地址_字节集 (pwStr), 真)
Release (ppv2)
.如果真结束
Release (ppv1)
.如果真结束
CoUninitialize ()
返回 (nRet = 0)
.子程序 查询快捷方式_, 文本型, 公开
.参数 快捷方式文件名, 文本型, , 如果文件名不包含后缀,将自动加上“.lnk”后缀名。
.局部变量 ppv1, 整数型
.局部变量 ppv2, 整数型
.局部变量 nRet, 整数型
.局部变量 pwStr, 字节集
.局部变量 sRet, 文本型
.局部变量 pFile, 整数型
.局部变量 sFileName, 文本型
CoInitialize (0)
CoCreateInstance ({ 1, 20, 2, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 70 }, 0, #CLSCTX_INPROC_SERVER, { 238, 20, 2, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 70 }, ppv1)
.如果真 (ppv1 ≠ 0)
QueryInterface (ppv1, 取变量数据地址_字节集 ({ 11, 1, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 70 }), ppv2)
.如果真 (ppv2 ≠ 0)
sFileName = 快捷方式文件名
.如果 (lstrlen (sFileName) > 4)
.如果真 (lstrcmpi (取变量数据地址_文本型 (sFileName) + lstrlen (sFileName) - 4, 取变量数据地址_文本型 (“.lnk”)) ≠ 0)
sFileName = sFileName + “.lnk”
.如果真结束
.否则
sFileName = sFileName + “.lnk”
.如果结束
pwStr = Ansi转Unicode (sFileName)
Load (ppv2, 取变量数据地址_字节集 (pwStr), 0)
pFile = LocalAlloc (64, 260)
GetPath (ppv1, pFile, 260, 0, 0)
sRet = 指针到文本 (pFile)
LocalFree (pFile)
Release (ppv2)
.如果真结束
Release (ppv1)
.如果真结束
CoUninitialize ()
返回 (sRet)