2017-09-28 5 views
0

De C++ je crée un lien de raccourci pour un fichier exécutable. Cela fonctionne très bien mais si le dossier exetuable a changé de chemin, le lien n'est plus utilisable (il affiche manuellement la recherche classique pour le fichier manquant). Si je crée un lien de raccourci à partir de Windows en faisant simplement glisser le fichier exécutable vers le chemin que je veux créer le lien et ensuite changer les chemins de dossier, il trouve toujours l'exécutable et met à jour les chemins du raccourci sans recherche manuelle ou quoi que ce soit comme ça.C++ shorcut.lnk met à jour les chemins si le fichier est manquant

Comment puis-je faire cela à partir de C++ aussi? J'ai essayé d'utiliser des arguments, mais je suppose que les arguments ne servent qu'à l'invite de commande et ne mettent pas à jour les liens simplement en exécutant le lien du raccourci.

Voici un lien sur la façon dont je l'ai fait en C++ How to programmatically create a shortcut using Win32

+1

Cette réponse SO est juste un copier/coller de l'article [MSDN] (https://msdn.microsoft.com/en-us/library/bb776891 (VS.85) .aspx). Utilisez l'exemple de code ResolveIt à la place. –

+0

"Une application peut avoir besoin d'accéder et de manipuler un raccourci qui a été créé précédemment.Cette opération est appelée résoudre le raccourci." Eh bien par cela et seulement je ne vérifie pas si cela en soi mettra à jour le raccourci car le raccourci ne peut pas trouver le raccourci l'application elle-même. Fera-t-il le travail ou sera-ce juste une perte de temps? C'est pourquoi je demande ici quelqu'un qui a déjà fait cela et sait avec certitude quoi faire ... – Vas

+1

L'hypothèse implicite dans votre question est que vous savez en quelque sorte ce qui est arrivé à la cible du lien et pouvez donc mettre à jour la propriété Path Si vous ne Je sais, et comment pourriez-vous savoir, alors c'est en effet une perte de temps. –

Répondre

0

Le shell utilise simplement la méthode IShellLink::Resolve.

Resolve utilise les informations stockées dans le fichier .lnk pour trouver la cible déplacée. Les informations incluent la date de création/modification, la taille et les attributs de fichier. Le service de suivi des liens distribués peut également être utile s'il est en cours d'exécution. Voir this Windows Confidential article pour plus de détails sur Windows 95 et Windows NT et this KB article et this web page pour plus d'informations sur LTS.

+0

Je vais essayer à nouveau si j'ai essayé et ne fonctionne pas bien. Je vais essayer une fois de plus maby cette fois ça va marcher, merci pour votre réponse détaillée Anders – Vas