Accueil > > > RECUPERER LE FICHIER POINTÉ PAR UN RACCOURCIS
RECUPERER LE FICHIER POINTÉ PAR UN RACCOURCIS
Information sur la source
Description
Dans une appli, je donne le choix a l'utilisateur de spécifier un fichier MDB. il m'est avantageux de le laisser selectionner un raccourcis. cette petite fonction permet de récupérer le chemin du fichier pointé par le LNK.
Source
- 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
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
Conclusion
Je sais que des codes existent sur VbFrance, mais cette version ne récupère que ce qui est nécessaire, et ne nécessite pas de dépendance externe (TLB pour IShellLink)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio
Forum
FONCTION EXCEL VBAFONCTION EXCEL VBA par samanta26
Cliquez pour lire la suite par samanta26
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|