長い引数文字列(> MAX_PATH)を含むショートカットを(デスクトップ上に)作成しようとしています。
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:OSはWindows XP(およびそれ以降)です。