; 我说的更新 和修改不一样,
; 举个例子, 我创建一个快捷方式指向文件 E:\1  然后 把文件 移动到其他盘 变成 F:\1, 
; 然后再次打开快捷方式时, 它的目标路径会自动更新到 F:\1    而不是原先的 E:\1, 
; 现在我想实现的是在不打开快捷方式的情况下, 更新目录路径

lnk := "D:\播放测试.ahk.lnk"

shellLink := ComObjCreate("{00021401-0000-0000-C000-000000000046}", "{000214F9-0000-0000-C000-000000000046}")
persistFile := ComObjQuery(shellLink, "{0000010b-0000-0000-C000-000000000046}")
DllCall(Vtable(persistFile, 5), "ptr", persistFile, "str", lnk, "uint", 0)
DllCall(Vtable(shellLink, 19), "ptr", shellLink, "ptr", 0, "uint", 8)
DllCall(Vtable(persistFile, 6), "ptr", persistFile, "ptr", 0, "int", true)
ObjRelease(persistFile)
ObjRelease(shellLink)

Vtable(ptr, n) {  ; By Tebayaki
    return NumGet(NumGet(ptr+0), n * A_PtrSize)
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。