Trouver le fichier lié à un raccourci

Description

J'avais besoin de trouver le fichier lié à un raccourci et j'ai rien trouver. J'ai donc décider de faire ma propre fonction.
Il ouvre le raccourci en binaire et recherche un répertoire+fichier valide et le renvoie

Source / Exemple :


'À mettre n'importe oû dans votre code (dans un module par exemple)

    Public Function ResolveShortcut(ByVal Filename As String) As String

        Try

            Dim bRead As Byte() = New IO.BinaryReader(New IO.FileStream(Filename, IO.FileMode.Open)).ReadBytes(FileLen(Filename))
            Dim bInvalid As Byte(), sInvalid As Short

            'Convertit les caractères invalide pr un répertoire (va servir à filtrer ce qui n'est pas bon)
            Array.Resize(bInvalid, IO.Path.GetInvalidPathChars.Length)
            For Each bChar As Char In IO.Path.GetInvalidPathChars
                bInvalid(sInvalid) = Asc(bChar) 'Convertit de Char à Byte
                sInvalid += 1
            Next

            Filename = Nothing 'On efface le contenu (on s'en sert pr le retour)
            For Each bChar As Byte In bRead

                Select Case IsInArray(bInvalid, bChar) 'On regarde si le caractère est invalide

                    Case False : Filename = Filename & Chr(bChar) 'Caractère valide

                    Case True 'Caratère invalide

                        'Vérifie si le fichier existe et s'il a un extension de fichier (sert de filtre)
                        Select Case (IO.File.Exists(Filename) And IO.Path.HasExtension(Filename))
                            Case False : Filename = Nothing 'On efface le contenu
                            Case True : Return Filename 'On a trouver le fichier
                        End Select

                End Select

            Next

        Catch
        End Try

    End Function

    'Array.BinarySearch() ne me retourne pas le bon index (weird! ;o)
    'Sa recherche un item dans un array, renvoie True si il le trouve
    Private Function IsInArray(ByVal Datas As Array, ByVal Search As Object) As Boolean
        For Each Data As Object In Datas
            If Data = Search Then Return True
        Next
    End Function

Codes Sources

A voir également

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.