begin process at 2010 02 10 06:49:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Connaitre la cible d'un raccourci


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Connaitre la cible d'un raccourci

mercredi 31 mai 2006 à 08:14:17 | Connaitre la cible d'un raccourci

esigvb

Bonjour, Je recherche à connaitre la cible d'un raccourci. Voici comment je fais mon raccourci : procedure CreerRacourci(Repertoire_du_raccourci, Cible_du_raccourci, Description : string); var ShellLink : IShellLink; begin If UpperCase(extractFileExt(Cible_du_raccourci)) <> '.LNK' Then Cible_du_raccourci := Cible_du_raccourci+'.lnk'; ShellLink := CreateComObject(CLSID_ShellLink) as IShellLink; ShellLink.SetDescription(PAnsiChar(Description)); ShellLink.SetPath(PAnsiChar(Repertoire_du_raccourci)); ShellLink.SetShowCmd(SW_SHOW); (ShellLink as IpersistFile).Save(StringToOleStr(Cible_du_raccourci), true); end; Je suppose que pour connaitre le raccourci après, il faut utiliser ShellLink, mais je ne sais pas quoi mettre après. Aidé moi SVP. Merci.
mercredi 31 mai 2006 à 14:00:51 | Re : Connaitre la cible d'un raccourci

cirec

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

Salut,

voici un petit bout de code que j'avais utilisé il y a longtemps déjà
la base du code n'est pas de moi (je l'avais récuperé je ne sais plus ou sur le net) je l'ai juste complété et réduit.

il existe peut être méthode plus courte mais en attendant elle fonctionne (testé Ok sous D4 pro):

Tu mets un Bouton un Label et un Mémo sur une form et tu complètes comme ceci :

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure GetLink(LinkPath: String);
  private
    { Déclarations privées }

...

implementation

{$R *.DFM}

Uses  ComObj,   //     pour IUnknown
      ActiveX,  //     pour IPersistFile
      ShlObj,   //     pour IShellLink
      Menus;    //     pour ShortCutToKey

procedure TForm1.GetLink(LinkPath: String);
var
    AnObj                            : IUnknown;
    ShLink                           : IShellLink;
    PFile                            : IPersistFile;
    WFileName                        : WideString;
    WorkingDir,Target ,IconLocation,
    Description, Arguments           : String;
    X1                               : Array [0..255] Of Char;
    Data                             : TWin32FindData;
    App1 ,ShowCmd,IconNumber         : Integer;
    W ,HotKey                        : Word;
    TheKey                           : Word;
    TheShiftState                    : TShiftState;

begin
  if UpperCase(ExtractFileExt(LinkPath)) <> '.LNK'then
  begin
     ShowMessage('Erreur: '+LinkPath+' n''est pas unRacourci valide');
     exit; // Si ce n'est pas un racourci on quitte
  end;
  // access to the two interfaces of the object
  AnObj := CreateComObject(CLSID_ShellLink);
  ShLink := AnObj as IShellLink;
  PFile := AnObj as IPersistFile;

  // Load with a WideString filename
  WFileName := LinkPath;
  PFile.Load(PWChar(WFileName),STGM_READ);

  Shlink.GetDescription(@X1,MAX_PATH);
  Description  := StrPas(@X1);

  SHlink.GetIconLocation(@X1,MAX_PATH,App1);
  IconLocation := StrPas(@X1);
  IconNumber   := App1;
  App1         := 0;

  SHlink.GetShowCmd(App1);
  ShowCmd      := App1;
 
  W            := 0;
  SHlink.GetHotKey(W);
  HotKey       := W;

  SHlink.GetArguments(@X1,MAX_PATH );
  Arguments    := StrPas(@X1);

  SHLink.GetWorkingDirectory(@X1,MAX_PATH );
  WorkingDir   := StrPas(@X1);

  SHlink.GetPath( @X1,MAX_PATH,Data,SLGP_UNCPRIORITY);
  Target       := StrPas(@X1);

  Label1.Caption:=StrPas(@X1)+' '+IntToStr(App1);
  ShortCutToKey(HotKey, TheKey, TheShiftState);

  With Memo1.Lines do
    Begin
      Clear;
      Add('Cible        :  '+  Target  );
      Add('Repertoire   :  '+  WorkingDir );
      Add('Icon         :  '+  IconLocation );
      Add('N° Icon      :  '+  IntToStr(IconNumber) );
      Add('Hot Key      :  '+  ShortCutToText(W) );
      Add('Arguments    :  '+  Arguments );
      Add('Description  :  '+  Description );
      Add('ShowCmd      :  '+  IntToStr(ShowCmd) );
    End;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetLink('C:\Documents and Settings\Administrateur\Bureau\PSPad.lnk');
end;

end.

Voilà c'est tout


n'oubliez pas de cliquer sur Réponse Acceptée si elle vous convient


@+
Cirec

mercredi 31 mai 2006 à 15:52:45 | Re : Connaitre la cible d'un raccourci

esigvb

Salut Cirec, Merci de ta réponse. Ca marche super bien (Delphi 2005), ta méthode donne toutes les informations du raccourci. Je n'avais besoin que de connaitre la cible, alors le code est très cours. Je garde bien ta source de côté... Ci-dessous, la procédure au minimum pour connaitre la cible du raccourci. procedure TForm2.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); // Affiche le résultat Label1.Caption:='Cible : '+ Cible_du_raccourci; end; Merci encore à toi Cirec, pour ta réponse claire comme d'habitude. Merci.
lundi 24 mars 2008 à 14:19:57 | Re : Connaitre la cible d'un raccourci

Tituit2007

merci!!!!!!!!!!!!
dimanche 25 mai 2008 à 10:42:25 | Re : Connaitre la cible d'un raccourci

korntex5

Je remet en forme

procedure TForm2.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); // Affiche le résultat Label1.
  Caption:='Cible : '+ Cible_du_raccourci;
end;



Cette discussion est classée dans : repertoire, connaitre, cible, raccourci, shelllink


Répondre à ce message

Sujets en rapport avec ce message

Connaitre le reprtoire de l'application [ par zorg63 ] Bonjour,quelqu'un peut-il me dire comment connaitre le repertoire de lancement d'une application. Je m'explique: je veux sauvegarder un fichier config Récupérer la cible d'un raccourci [ par esigvb ] Bonjour, Comme le sujet l'indique, je recherche à récupérer la cible d'un raccourci. J'ai trouvé des informations sur la création d'un raccourci, mai Récupérer la cible d'un raccourci [ par fgsav ] Bonjour à tous et merci de vous intéresser à mon problème Je suis en quelque sorte en train de reproduire le comportement de l'outil MsConfig de Windo Lien DLL dans un répertoire spécifique [ par dimdidi ] Bonjour,J'utilise delphi 7 sous windowsXP.J'ai plusieurs applications developpées en delphi qui utilise des DLLs spécifiquesJe voudrais regroupé mes D connaitre la date d'un fichier ou dossier sur un serveur ? [ par Jiihad ] ben comme au titre j uen application  et je veux connaitre la date surtous d'un dossier  dans un server  par exemple ici a c lien  http://www.al7bar-f Comment deplacer un fichier vers un repertoire? [ par ewertheimer ] Bonjour, J'aimerais savoir comment deplacer un fichier en entrant comme information des types string : L'emplacement du fichier et le repertoire de de Naviguer dans l'éditeur [ par Sat83 ] Bonsoir (ou bonjour) !Alors voilà j'ai delphi 6, et je viens de decouvrir quelque raccourci permettant de navigué plus vite dans le code source...Je v Raccourci DOSSIER [ par esigvb ] Bonjour, Je souhaite créer un raccourci d'un dossier, et si possible y mettre une description. J'ai trouvé sur ce site comment faire un raccourci d'u Connaitre le contenu d'un dossier [ par esigvb ] Bonjour, Je souhaite savoir si un dossier contient des fichiers. Car par exemple windows donne le nombre de fichiers et de dossier. Clic droite sur Ecraser un *.bd actif ?!??!???!????! [ par toubal_99 ] voila , g chercher dans le forum g pas trouver .g integrer un mon projet de TP une fonctionalitée de sauvegarde restorations des fichiers de la base d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales