Как получить имя файла из его ярлыка?
uses
..., ShlObj, ComObj, ActiveX;
function GetFileNameFromLink( LinkFileName: string ): string;
var
MyObject: IUnknown;
MySLink: IShellLink;
MyPFile: IPersistFile;
FileInfo: TWin32FINDDATA;
WidePath: array[0..MAX_PATH] of WideChar;
Buff: array[0..MAX_PATH] of Char;
begin
Result := '';
if ( FileExists( LinkFileName ) = false ) then
Exit;
MyObject := CreateComObject( CLSID_ShellLink );
MyPFile := MyObject as IPersistFile;
MySLink := MyObject as IShellLink;
StringToWideChar( LinkFileName, WidePath, SizeOf( WidePath ) );
MyPFile.Load( WidePath, STGM_READ );
MySLink.GetPath( Buff, MAX_PATH, FileInfo, SLGP_UNCPRIORITY );
Result := buff;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( GetFileNameFromLink( 'C:\NOTEPAD.lnk' ) );
end; |