我想以编程方式确定是否已从C#找到链接目标。使用代码link.Resolve(SLR_FLAGS.SLR_UPDATE)
会出现一个对话框,提示找不到链接目标,并提供删除快捷方式的选项。
用于生成链接的代码是
Type t = Type.GetTypeFromProgID("Shell.Application");
dynamic shell = Activator.CreateInstance(t);
var folder = shell.NameSpace(pathOnly);
var folderItem = folder.ParseName(filenameOnly);
string sAbsPath = "";
if (folderItem != null)
{
(Shell32.ShellLinkObject)folderItem.GetLink;
var link = folderItem.GetLink;
}
如果我添加了使用link.Resolve(SLR_FLAGS.SLR_UPDATE|SLR_FLAGS_NO_UI)
禁止显示UI的选项,则会采用不删除快捷方式的选项,并且link.Path仍指向未找到其位置的文件。在这种情况下,链接对象似乎没有指示未找到链接目标的属性。有人知道这样做的方法吗?