none
Obtenir le nom en 8.3 avec VB 2008 RRS feed

  • Question

  • Bonjour,

    en VB 6 on utilisait ceci :

    Dim Fso As Object = CreateObject("Scripting.FileSystemObject")
    Dim objFile = Fso.GetFile("C:\...")

    Puis :

    TextBoxNomCourt.Text = objFile.ShortPath

    N'y a-t-il pas une solution meilleure en VB 2008 ? Scripting.FileSystemObject commence à se faire vieux.

    Merci

    dimanche 4 août 2013 12:25

Réponses

  • Merci Jacques !

    Il y avait une petite erreur Strings au lieu de Str. La ligne d'imports n'est pas obligatoire.

    Private Declare Function GetShortPathName Lib "kernel32" Alias
    "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As
    String, ByVal lBuffer As Int32) As Int32

    Public Function GetShortPath(ByVal strPath As String) As String
    Dim lngRes As Int32, strBuffer As String
    strBuffer = Strings.Space(255)
    lngRes = GetShortPathName(strPath, strBuffer, 254)
    GetShortPath = Strings.Left(strBuffer, lngRes)
    End Function

    Exemple d'utilisation :

    MsgBox(GetShortPath("C:|Program Files"))

    Encore merci !

    • Marqué comme réponse Michel56100 dimanche 4 août 2013 21:08
    dimanche 4 août 2013 21:08

Toutes les réponses

  • Bonjour,

    Je ne comprend pas trop la question mais si c'est pour récupérer le chemin d'un fichier, il suffit d'utiliser "openFileDialog"


    Jacques
    Si la réponse vous satisfait, n'oubliez pas de la proposer comme réponse. Merci

    dimanche 4 août 2013 14:12
  • Bonjour Jacques,

    Justement, avec openFileDialog, on obtient le nom long d'un fichier (ex : C:\Program Files\...) moi je voudrais récupérer le nom en 8.3 (ex : C:\PROGRA~1\...).

    C'est pour des commandes MS-DOS.

    dimanche 4 août 2013 14:38
  • Bonjour,

    Il faut utiliser les API ... :

    À tester

    Imports Microsoft.VisualBasic.Strings

    Private Declare Function GetShortPathName Lib "kernel32" Alias
    "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As
    String, ByVal lBuffer As Int32) As Int32

    Public Function GetShortPath(ByVal strPath As String) As String
    Dim lngRes As Int32, strBuffer As String
    strBuffer = Str.Space(255)
    lngRes = GetShortPathName(strPath, strBuffer, 254)
    GetShortPath = Str.Left(strBuffer, lngRes)
    End Function

    Exemple d'utilisation :

    MsgBox(GetShortPath("c:Program Files"))


    Jacques
    Si la réponse vous satisfait, n'oubliez pas de la proposer comme réponse. Merci

    • Proposé comme réponse Jacques93 dimanche 4 août 2013 20:04
    dimanche 4 août 2013 15:02
  • Merci Jacques !

    Il y avait une petite erreur Strings au lieu de Str. La ligne d'imports n'est pas obligatoire.

    Private Declare Function GetShortPathName Lib "kernel32" Alias
    "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As
    String, ByVal lBuffer As Int32) As Int32

    Public Function GetShortPath(ByVal strPath As String) As String
    Dim lngRes As Int32, strBuffer As String
    strBuffer = Strings.Space(255)
    lngRes = GetShortPathName(strPath, strBuffer, 254)
    GetShortPath = Strings.Left(strBuffer, lngRes)
    End Function

    Exemple d'utilisation :

    MsgBox(GetShortPath("C:|Program Files"))

    Encore merci !

    • Marqué comme réponse Michel56100 dimanche 4 août 2013 21:08
    dimanche 4 août 2013 21:08