IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Probléme nom fichier avec WIMNN.dll


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Services à domicile

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Points : 108
    Points
    108
    Par défaut Probléme nom fichier avec WIMNN.dll
    Bonsoir, j'aimerais un petit coup de pouce pour un problème avec cette dll.

    Je l'utilise afin de récupérer la durée d'un fichier vidéo. Seul petit problème si un espace apparait dans le chemin du fichier ou dans le nom du fichier la fonction pour récupérer sa durée ne fonctionne plus.

    Code de la fonction afin d'avoir la durée d'un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
      Private Declare Function mciExecute Lib "WINMM.DLL" (ByVal lpstrCommand As String) As Long
        Private Declare Function mciSendString Lib "WINMM.DLL" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
        Function GetAviDuration(ByVal sPath As String) As String
            '   retourne la durée du fichier AVI en  secondes
            Dim sAlias As String, sBuffer As String
            Dim lRet As Long
            sAlias = "FONCTION_MCI_" '& CStr(Now.Second)
     
            '    chargement
            Call mciExecute("OPEN " & sPath & " TYPE AVIVIDEO ALIAS " & sAlias & " STYLE POPUP")
            Dim i As Integer = Len(sPath)
            '   on récupère les ms totales
            sBuffer = New String(vbNullChar, 128&)
            Call mciSendString("SET " & sAlias & " TIME FORMAT  MS", sBuffer, Len(sBuffer), 0&)
            lRet = mciSendString("STATUS  " & sAlias & "  LENGTH", sBuffer, Len(sBuffer), 0&)
     
            '   retour
            GetAviDuration = Val(Microsoft.VisualBasic.Left(sBuffer, InStr(sBuffer, vbNullChar))) \ 1000
     
            '    stop
            Call mciExecute("CLOSE " & sAlias)
     
        End Function
    Celle-ci marche trés bien a condition qu'aucun n'espace ne soit mit dedans.
    Auriez-vous une idée ?
    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Services à domicile

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Points : 108
    Points
    108
    Par défaut
    En continuant mes recherches j'ai trouvé la solution. Il faut utiliser le nom du fichier court. Pour le récupérer on peut utiliser la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
     
        Const MAX_PATH_LENGHT = 255
     
        Public Function ShortPath(ByVal LongPath As String) As String
     
            Dim tmpShortPath As String
            Dim RC As Long
     
            tmpShortPath = Space(MAX_PATH_LENGHT + 1)
     
            RC = GetShortPathName(LongPath, tmpShortPath, MAX_PATH_LENGHT + 1)
     
            ShortPath = Left(tmpShortPath, InStr(tmpShortPath, Chr(0)) - 1)
     
        End Function
    Désolé pour le poste inutile

  3. #3
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Tu peux aussi faire un replace des espaces par son code ascii
    032 040 20 00100000 SP (Space)
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème nom fichier avec accent Mac -> Windows
    Par shinchan dans le forum Mac OS X
    Réponses: 5
    Dernier message: 26/08/2013, 21h14
  2. Problème lecture fichier avec >>
    Par C1rcus dans le forum C++
    Réponses: 2
    Dernier message: 18/11/2007, 18h19
  3. Problème recup fichiers avec Easy recovery 6 pro
    Par poney01 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 16/05/2007, 15h00
  4. Problème de tas avec une dll
    Par vinny_the_true dans le forum C++
    Réponses: 8
    Dernier message: 17/12/2006, 19h14
  5. Problème de lien avec wsock32.dll sous g++ (mingw32)
    Par TheShadow dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 11/04/2006, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo