Soyez le premier à donner votre avis sur cette source.
Snippet vu 6 394 fois - Téléchargée 30 fois
Public Function ResolveShortcut(ByRef vsLnkFilePath As String) As String Dim hFile As Integer Dim nByteBuffer As Byte Dim nLongBuffer As Long Dim nIntBuffer As Integer Dim nPosFLI As Long '# Position de départ de la FLI (File Location Info) Dim nOffset_BasePath As Long Dim nOffset_Network As Long Dim nOffset_Remaining As Long hFile = FreeFile Open vsLnkFilePath For Binary Access Read As hFile Get hFile, 1, nLongBuffer '# les fichiers LNK commencent par un 'L' If nLongBuffer = 76 Then '# On skippe le GUID Seek hFile, 21 '# On récupère les flags Get hFile, , nLongBuffer '# si la Shell Item ID liste est présente... If nLongBuffer And 1 Then Seek hFile, 77 '# On récupère la taille totale de la liste Get hFile, , nIntBuffer '# et on décale d'autant le pointeur de lecture. nPosFLI = 79 + nIntBuffer Else nPosFLI = 77 End If '# On skippe la taille, les flags, et les Local Volume Info Seek hFile, nPosFLI + 16 '# Offset du chemin, si fichier local Get hFile, , nOffset_BasePath '# Offset du repertoire réseau Get hFile, , nOffset_Network '# Offset du reste (éventuel) du nom du fichier Get hFile, , nOffset_Remaining If nOffset_BasePath Then Seek hFile, nPosFLI + nOffset_BasePath Do Get hFile, , nByteBuffer If nByteBuffer <> 0 Then ResolveShortcut = ResolveShortcut & ChrW$(nByteBuffer) Else Exit Do End If Loop ElseIf nOffset_Network Then Seek hFile, nPosFLI + nOffset_Network + &H14 Do Get hFile, , nByteBuffer If nByteBuffer <> 0 Then ResolveShortcut = ResolveShortcut + ChrW$(nByteBuffer) Else Exit Do End If Loop ResolveShortcut = ResolveShortcut & "\" End If If nOffset_Remaining Then Seek hFile, nPosFLI + nOffset_Remaining Do Get hFile, , nByteBuffer If nByteBuffer <> 0 Then ResolveShortcut = ResolveShortcut + ChrW$(nByteBuffer) Else Exit Do End If Loop End If Else ResolveShortcut = vsLnkFilePath End If Close hFile End Function
14 sept. 2009 à 00:17
Cette source m'intéresse mais hélas en la copiant dans mon projet j'ai beaucoup d'erreur.
Je pense que ce code est pour VB et pas pour VB NET 2008
Renfield y a pas moyen d'en avoir une adaptation.
J'essaye tout simplement de récupérer la cible contenu dans le fichier LNK et pour l'instant je tourne en rond.
J'ai essayé d'utiliser en faisant imports shell32 pour avoir Dim MonRaccourci_obj As ShellLinkObject mais je n'ai pas trouvé comment affecté l'emplacement du fichier LNK à l'objet pour l'ouvrir et récupérer la cible contenu dans le fichier.
Merci de votre aide en VB NET
8 sept. 2006 à 16:27
@+
8 sept. 2006 à 15:42
pas un ersatz de flemme, mais je vais finallement surement passer par IShellLink, car certains raccourcis sont mal analysés (Office 2003, par exemple)...
en même temps, l'info sur wotsit n'est pas une info officielle, et elle date un peu.
8 sept. 2006 à 15:30
Sinon logiquement, il serait possible de trouver toutes les infos d'un raccourci en procédant pareil ? (histoire de se passer de IShellLink) En tout cas ce code est déjà bien pratique ^^
7 sept. 2006 à 22:14
pour la doc, je suis parti du même fichier (vive wotsit)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.