Trouver le fichier lié à un raccourci

Soyez le premier à donner votre avis sur cette source.

Vue 13 311 fois - Téléchargée 505 fois

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

Ajouter un commentaire

Commentaires

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
N'est-ce pas plus simple de rechercher un code déjà existant ?

comme, par exemple :
http://www.vbfrance.com/code.aspx?ID=7390
http://www.vbfrance.com/code.aspx?id=1053
Messages postés
153
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
1 mai 2012
1
Salut,

quelqu'un pourait-t-il l'adapter en vb6 please ?

Merci d'avance.

A+

Antho2005
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
regarde si le fichier pointé existe ^^
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Messages postés
34
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2008

pourrait-tu m'expliquer comment faire cette manip?

merci d'avance!!
Afficher les 6 commentaires

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.