我正在尝试创建一个包含长参数字符串(> MAX_PATH)的快捷方式(在桌面上)。
根据MSDN文档,对于Unicode字符串,该字符串可以比MAX_PATH更长。
生成的快捷方式会在MAX_PATH字符之后被截断(即Path和Arguments)。
我的实现有问题吗,还是这是Windows的限制?
根据MSDN文档,对于Unicode字符串,该字符串可以比MAX_PATH更长。
生成的快捷方式会在MAX_PATH字符之后被截断(即Path和Arguments)。
我的实现有问题吗,还是这是Windows的限制?
procedure CreateShortcut(APath: WideString;
AWorkingDirectory: WideString; AArguments: WideString; ADescription: WideString;
ALinkFileName: WideString);
var
IObject : IUnknown;
ISLink : IShellLinkW;
IPFile : IPersistFile;
begin
IObject := CreateComObject(CLSID_ShellLink);
ISLink := IObject as IShellLinkW;
ISLink.SetPath( PWideChar(APath));
ISLink.SetWorkingDirectory(PWideChar(AWorkingDirectory));
ISLink.SetArguments( PWideChar(AArguments));
ISLink.SetDescription( PWideChar(ADescription));
IPFile := IObject as IPersistFile;
IPFile.Save(PWideChar(ALinkFileName), False);
end;
PS:操作系统为Windows XP(及以上版本)。
IID_IShellLinkA
和IID_IShellLinkW
。CLSID_ShellLink
是{00021401-0000-0000-c000-000000000046}
。Jens 已经在使用IShellLinkW
。 - Sertac Akyuz