Réponse acceptée !
Bonjour,
Voici une procédure qui permet de trouver la cible d'un raccourci et sa description.
Je remercie Cirec pour son aide.
Uses ComObj, // pour IUnknown
ActiveX, // pour IPersistFile
ShlObj; // pour IShellLink
procedure Connaitre_la_cible(Chemin_du_raccourci: String);
var
Unknown : IUnknown;
ShellLink : IShellLink;
PersistFile : IPersistFile;
WFileName : WideString;
Cible_du_raccourci : String;
X1 : Array [0..255] Of Char;
Data : TWin32FindData;
begin
if UpperCase(ExtractFileExt(Chemin_du_raccourci)) <> '.LNK' then
begin
ShowMessage('Erreur: '+Chemin_du_raccourci+' n''est pas unRacourci valide');
exit; // Si ce n'est pas un racourci on quitte
end;
// Accéder aux deux interfaces de l'objet
Unknown := CreateComObject(CLSID_ShellLink);
ShellLink := Unknown as IShellLink;
PersistFile := Unknown as IPersistFile;
// Chargement du raccourci
WFileName := Chemin_du_raccourci;
PersistFile.Load(PWChar(WFileName),STGM_READ);
// Récupère le path de la cible
ShellLink.GetPath( @X1,MAX_PATH,Data,SLGP_UNCPRIORITY);
Cible_du_raccourci := StrPas(@X1);
// Récupère la description du raccourci
ShellLink.GetDescription(@X1,MAX_PATH);
Description_du_raccourci := StrPas(@X1);
// Affiche le résultat
Label1.Caption:='Cible : '+ Cible_du_raccourci;
Label2.Caption:='Description : '+ Description_du_raccourci;
end;
|