Récupérer la cible d'un raccourci

fgsav Messages postés 16 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 22 octobre 2008 - 21 déc. 2005 à 13:35
fgsav Messages postés 16 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 22 octobre 2008 - 13 janv. 2006 à 14:03
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 Windows XP, afin de gérer les modules chargés au démarrage du système. Pas de problème en ce qui concerne les entrées de la base de registre, en revanche, je bloque sur les fichiers LNK du menu démarrer.
Voici le problème:
Je ne trouve aucun moyen de récupérer la cible d'un raccourci.
En fait, une technique fonctionne, mais elle recquière l'intervention de l'utilisateur: à l'aide du composant opendialog, si l'on sélectionne un fichier lnk, le opendialog.filename devient la cible et non le fichier lnk... Y-a t'il un moyen de simuler cette action?
Quelqu'un connaît-il une façon de récupérer cette fichue cible, que ce soit en dos, vbs, ou pascal.
Malheureusement, l'utilisation de IShellLink m'est impossible sous Lazarus...
Je vais continuer à chercher, et vous tiendrai au courant, si quelqu'un peut m'éclairer, je l'en remercie par avance

5 réponses

DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
22 déc. 2005 à 08:57
avec "IShellLink" c'est connu ...mais sans "IShellLink"... il va falloir s'accrocher, je regarde de mon côté, ça m'intéresse

DrJerome
0
fgsav Messages postés 16 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 22 octobre 2008
22 déc. 2005 à 09:33
Merci, rien de neuf de mon côté
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
22 déc. 2005 à 12:01
Voici la page qu'il vous faut : Delphi 6 Shell Links extraite du livre Delphi 6 developers's guide et écrite par deux gourous du Delphi Xavier Pacheco et Steve Teixeira
Voir, notamment, l'usage de la fonction GetShellLinkInfo.

<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
fgsav Messages postés 16 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 22 octobre 2008
22 déc. 2005 à 21:02
Merci Delphiprog, je ne connaissais pas ce document, je le met de côté
Malheureusement l'utilisation de IShellLink semble ne pas fonctionner avec Lazarus (Identifier not found), malgré la déclaration de ShlObj dans les 'uses'.
Je cherche de ce côté là aussi...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fgsav Messages postés 16 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 22 octobre 2008
13 janv. 2006 à 14:03
Kikou, toujours po trouvé de solution à ce problème, mais une façon de récupérer la totalité dé raccourcis du système (lol) via un script WSH é la classe WMI Win32_ShortcutFile:
_________________________________________________________________

On Error Resume Next


Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20


arrComputers = Array("NOM_POSTE")
For Each strComputer In arrComputers
WScript.Echo
WScript.Echo "=========================================="
WScript.Echo "Computer: " & strComputer
WScript.Echo "=========================================="


Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ShortcutFile", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)


For Each objItem In colItems
WScript.Echo "AccessMask: " & objItem.AccessMask
WScript.Echo "Archive: " & objItem.Archive
WScript.Echo "Caption: " & objItem.Caption
WScript.Echo "Compressed: " & objItem.Compressed
WScript.Echo "CompressionMethod: " & objItem.CompressionMethod
WScript.Echo "CreationClassName: " & objItem.CreationClassName
WScript.Echo "CreationDate: " & WMIDateStringToDate(objItem.CreationDate)
WScript.Echo "CSCreationClassName: " & objItem.CSCreationClassName
WScript.Echo "CSName: " & objItem.CSName
WScript.Echo "Description: " & objItem.Description
WScript.Echo "Drive: " & objItem.Drive
WScript.Echo "EightDotThreeFileName: " & objItem.EightDotThreeFileName
WScript.Echo "Encrypted: " & objItem.Encrypted
WScript.Echo "EncryptionMethod: " & objItem.EncryptionMethod
WScript.Echo "Extension: " & objItem.Extension
WScript.Echo "FileName: " & objItem.FileName
WScript.Echo "FileSize: " & objItem.FileSize
WScript.Echo "FileType: " & objItem.FileType
WScript.Echo "FSCreationClassName: " & objItem.FSCreationClassName
WScript.Echo "FSName: " & objItem.FSName
WScript.Echo "Hidden: " & objItem.Hidden
WScript.Echo "InstallDate: " & WMIDateStringToDate(objItem.InstallDate)
WScript.Echo "InUseCount: " & objItem.InUseCount
WScript.Echo "LastAccessed: " & WMIDateStringToDate(objItem.LastAccessed)
WScript.Echo "LastModified: " & WMIDateStringToDate(objItem.LastModified)
WScript.Echo "Manufacturer: " & objItem.Manufacturer
WScript.Echo "Name: " & objItem.Name
WScript.Echo "Path: " & objItem.Path
WScript.Echo "Readable: " & objItem.Readable
WScript.Echo "Status: " & objItem.Status
WScript.Echo "System: " & objItem.System
WScript.Echo "Target: " & objItem.Target
WScript.Echo "Version: " & objItem.Version
WScript.Echo "Writeable: " & objItem.Writeable
WScript.Echo
Next
Next



Function WMIDateStringToDate(dtmDate)
WScript.Echo dtm:
WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
& " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2))
End Function
_________________________________________________________________

Reste à savoir comment l'adapter afin de récupérer objItem.Target à partir de objItem.Name spécifique :p
0
Rejoignez-nous