中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 05:21
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » vbs 更改快捷方式的目标路径后,如何不改变图标?
可打印版本  826 / 4
第1楼 25869 发表于 2009-08-07 00:45
新手上路 发帖 10 积分 10
vbs 更改快捷方式的目标路径后,如何不改变图标?
网上找到的改变快捷方式的目标路径,可更改后,图标也变了,请问如何解决?
Sub Doit(strlnk)
Dim oShlnk
Set oShlnk = Wsh.CreateShortcut(strlnk)
If Instr(oShLnk.TargetPath,oldpath) > 0 Then
old=oShLnk.IconLocation
oShLnk.IconLocation=old '添加后无效


oShLnk.TargetPath = Replace(oShLnk.TargetPath,oldpath,newpath)
oShLnk.WorkingDirectory = Replace(oShLnk.WorkingDirectory,oldpath,newpath)
oShLnk.Save
ji_2 = ji_2 + 1
End If
Set oShLnk=NoThing
End Sub


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

第2楼 slore 发表于 2009-08-07 01:31
铂金会员 发帖 2,478 积分 5,212
既然知道问题。。。
为什么不调试下。。。

msgbox old
你就知道为什么了。


还有
b=a
a=b

这样做有意义麽?
第3楼 25869 发表于 2009-08-07 02:16
新手上路 发帖 10 积分 10
多谢指教, 我试过 wscript.echo old 得到 ",0"

我的意思是用原来的快捷方式图标, 测试后无效, 所以才发帖请教的.

old=oShLnk.IconLocation
oShLnk.IconLocation=old
第4楼 slore 发表于 2009-08-07 02:46
铂金会员 发帖 2,478 积分 5,212
你没看明白麽?

如果只有图标的索引指向的目标程序的。

这个地方
你倒来倒去没发现没做什么事麽?
b=a
a=b


如果原来指向A.exe
图标,0
你改变为B.exe
图标,0没有变。。。

显示的图标由目标决定。

如果是自定义的图标就会显示全路径
X:\XXX\XXX.EXE,2

你图标设置
oShLnk.IconLocation=oShLnk.TargetPath & oShLnk.IconLocation

但是为了通用你最好判断下。
oShLnk.IconLocation是不是只有图标索引,就是第一个字符是不是","
如果不是就不用变。
第5楼 25869 发表于 2009-08-07 09:17
新手上路 发帖 10 积分 10
图标的索引指向规则不太熟悉

加上就可以了
if left(oShLnk.IconLocation,1)="," then oShLnk.IconLocation=oShLnk.TargetPath & oShLnk.IconLocation
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023