Я пытаюсь создать ярлык (на рабочем столе), содержащий длинную строку аргументов (> MAX_PATH).
В документации MSDN четко указано, что для строки Unicode строка может быть длиннее MAX_PATH.
Результирующий ярлык обрезается сразу после символов MAX_PATH (то есть Path
+ Аргументы
).
Что-то не так с моей реализацией или это какое-то ограничение 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 (и выше).