PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Récupérer la cible d'un raccourci
Récupérer la cible d'un raccourci
Débuté par GUERVILLE Alban, 12 juin 2013 13:21 - 6 réponses
Posté le 12 juin 2013 - 13:21
Bonjour,

Je cherche à récupérer la cible d'un raccourci en windev
Il faut que j'identifie dans un premier temps si le fichier est un raccourci ou un fichier normal (car il ne porte pas l'extension lnk), puis ensuite je voudrais récupérer la cible de ce raccourci

Avez vous une idée SVP
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 12 juin 2013 - 15:18
Bonjour,
la structure d'un fichier lnk est expliquée dans ce document http://ithreats.files.wordpress.com/2009/05/lnk_the_windows_shortcut_file_format.pdf
Membre enregistré
355 messages
Popularité : +37 (39 votes)
Posté le 12 juin 2013 - 15:29
Bonjour,

Voici un bout de code que j'avais en WD11 qui devrait pouvoir t'aider.
sTargetPath est une chaîne
objWscriptest un objet automation "WScript.Shell"
oShellLinkest un objet automation dynamique
// Propriétés (voir WshShortcut Object Properties and Methods)
//oShellLink.TargetPath : Chemin complet de la cible du raccourci
//oShellLink.WindowStyle : Style de la fenêtre d'exécution (1 ,3 , 7) (voir WindowStyle Property)
//oShellLink.Hotkey : Touches assignées au raccourci (voir Hotkey Property)
//oShellLink.IconLocation : Chemin et index de l'icone du raccourci (voir IconLocation Property)
//oShellLink.Arguments : Collection d'arguments de l'objet
//oShellLink.FullName: FullName du host executable
//oShellLink.Description : Description du raccourci
//oShellLink.WorkingDirectory : Directory de travail du raccourci
//
oShellLink=objWscript>>CreateShortCut(gsFich) // Creates a new shortcut, or opens an existing shortcut.
sTargetPath=oShellLink>>TargetPath // Récupère le chemin de la cible

Trace("Link="+gsFich)
Trace("TargetPath="+oShellLink>>TargetPath )
Trace("Description="+oShellLink>>Description)
Trace("WindowStyle="+oShellLink>>WindowStyle)
Trace("WorkingDirectory="+oShellLink>>WorkingDirectory)
Trace("Hotkey="+oShellLink>>Hotkey)
Trace("Arguments="+oShellLink>>Arguments)
Trace("IconLocation="+oShellLink>>IconLocation)
Trace("FullName="+oShellLink>>FullName)

WshShortcut est documenté sur http://msdn.microsoft.com/en-us/library/xk6kst2k(v=vs.84).aspx

A+

--
Francis MOREL
http://www.SoftProtect.fr
Membre enregistré
355 messages
Popularité : +37 (39 votes)
Posté le 12 juin 2013 - 15:40
Re,

Je voulais ajouter aussi :
Concernant l'absence de l'extension .lnk, il est probable que ce soit l'explorateur qui te la supprime à l'affichage.
Regarde le nom du fichier dans un champ windev, par exemple avec le superchamp sélecteur de fichier.

A+

--
Francis MOREL
http://www.SoftProtect.fr
Posté le 14 juin 2013 - 16:19
Merci pour votre réponse

Mais je rencontre un autre probleme

Mes raccourcis ne porte pas l'extention .lnk (mais .pdf, alors que c'est bien un raccourci...)
Du coup cette fonction échoue

De plus je n'arrive pas a renomer dynamiquement ce fichier, car la fonction frenome ne marche pas sur un fichier qui est un raccourci, mais qui ne contient pas l'extention lnk
Membre enregistré
355 messages
Popularité : +37 (39 votes)
Posté le 14 juin 2013 - 17:24
Bonjour,

Mes raccourcis ne porte pas l'extention .lnk (mais .pdf, alors que c'est bien un raccourci...)
Du coup cette fonction échoue


C'est clair que le raccourci doit absolument se terminer par ".lnk" ou ".url" pour que ces fonctions soient opérationnelles.

Mais, es-tu bien sûr qu'il n'y a pas de ".lnk", n'est pas plutôt l'explorateur de Windows qui te supprime le ".lnk" lors de l'affichage, comme je te le disais dans mon dernier message.

> De plus je n'arrive pas a renomer dynamiquement ce fichier, car la fonction frenome ne marche pas sur un fichier qui est un raccourci, mais qui ne contient pas l'extention lnk

Ça par contre c'est faux, frenomme() permet d'ajouter un ".lnk" à condition que le fichier passé en premier argument existe.
Ça va aussi dans le sens de la conformation de l'hypothèse ci-dessus.

Comme je te le disais, essaye de voir le nom exact de ce fichier de raccourci avec le superchamp sélecteur de fichier de Windev.
Mais pour que cela soit significatif il ne faut pas utiliser le bouton du sélecteur mais le DND depuis l'explorateur.
Et la, dans bien des cas, miracle, le .lnk apparait
Peut-être que comme cela tu verras le .lnk

Tiens-nous au courant.

A+

--
Francis MOREL
http://www.SoftProtect.fr
Posté le 13 décembre 2017 - 21:10
bonjour, nous sommes en ce moment en travail sur un logiciel pour reecrire des cibles de raccourci cassé (changement de lettre reseau)

mais nous avons un probleme, nous arrivons a recuperer la cible du lien.lnk

exemple

c:/toto

sauf que en réalité, su je fais clic droit propriété sur le lien, la vrai cible est

"c:/toto"

ce qui change tout, car les "" ne sont pas exploitable, donc pas effaçable et ce sont pourtant eux qui font que le liens n'est plus fonctionnel

merci de votre aide