Probleme de mp3 avec une API vb - VB/VBA/VBS - Programmation
Marsh Posté le 26-11-2002 à 18:50:41
bien sur ! il te suffit de mettre juste au bonne endroit de ton code
Code :
|
désolé, je ne connais plus l'emplacement exact, mais c'est le principe...
Marsh Posté le 26-11-2002 à 19:35:51
macray , jsuis dsl mais j'y arrive pas , ca me prend la tete sérieux , la ta tout mon code donc si tu y arrive de ton coté a les répertorié dans une listbox , fais moi signe . Merci
Marsh Posté le 26-11-2002 à 23:59:43
Code :
|
Marsh Posté le 27-11-2002 à 14:15:13
lut , Merci Karl !!! ca marche trop bien , maintenant le probleme c'est que dans la listbox on voit le chemin du fichier mais pas le nom de fichier en .mp3 :\ c un peu embetant pour un player mp3 si tu pouvais savoir d'ou viens le bleme ca m'aiderais , ciao
Marsh Posté le 27-11-2002 à 17:23:54
Code :
|
Modifie :
Code :
|
Par
Code :
|
Marsh Posté le 27-11-2002 à 18:36:00
'wesh man , j'ai changé le code que tu m'avait dit de changer , mais ca ne marche pas , Les fichiers de la list sont invisible :\ c koi le probleme ?
Marsh Posté le 27-11-2002 à 18:46:05
Spiritu4L a écrit a écrit : 'wesh man , j'ai changé le code que tu m'avait dit de changer , mais ca ne marche pas , Les fichiers de la list sont invisible :\ c koi le probleme ? |
la valeur de cheminRep est null c'est pr ca !
Marsh Posté le 27-11-2002 à 18:52:27
Et je dois faire comment pour que le fichier mp3 apparraise seul c'et a dire just "Jarule - What'Luv" et tous les mp3 comme ca dans la listbox ?
Marsh Posté le 27-11-2002 à 18:52:37
Et je dois faire comment pour que le fichier mp3 apparraise seul c'et a dire just "Jarule - What'Luv" et tous les mp3 comme ca dans la listbox ?
Marsh Posté le 27-11-2002 à 19:35:56
Spiritu4L a écrit a écrit : Et je dois faire comment pour que le fichier mp3 apparraise seul c'et a dire just "Jarule - What'Luv" et tous les mp3 comme ca dans la listbox ? |
je ne connais pas la valeur de la chaine de la sortie, donc difficile de le dire, dis nou sce qu'elle mets, c'est plus simple à répondre...
Marsh Posté le 27-11-2002 à 20:11:00
tiens voilà mon code eclate toi , et fais en sorte que ca marche ca m'aiderais
[#d42a00]Option Explicit
'----------------------------------------
'------Déclarations propres aux API------
'----------------------------------------
'---Les constantes---
Private Const MAX_PATH = 260
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_READONLY = &H1
Private Const FILE_ATTRIBUTE_HIDDEN = &H2
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Const FILE_ATTRIBUTE_COMPRESSED = &H800
'---Les API---
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
'---Les types---
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
'----------------------------------------------
'------Déclarations propres à la fonction------
'----------------------------------------------
Private Type ListeFichier
Fichiers() As WIN32_FIND_DATA
Chemin() As String * MAX_PATH
Nombre As Long
End Type
'--------------------------------------------------------
'---La fonction Rechercher : ---
'--- Cette fonction recherche tous les fichiers dans ---
'--- le répertoire spécifié et ses sous-repertoires ---
'--- Elle retourne le nombre d'occurences trouvées ---
'--------------------------------------------------------
Private Function Rechercher(Chemin As String, FichierR As String, _
ResultatRecherche As ListeFichier) As Long
'---Déclaration des variables---
Dim lpFindFileData As WIN32_FIND_DATA
Dim hFindFile As Long
Dim lgRep As Long
Dim CheminRep As String
'---Recherche tous les fichiers demandés dans le répertoire Chemin---
hFindFile = FindFirstFile(Chemin & FichierR, lpFindFileData)
If hFindFile <> INVALID_HANDLE_VALUE Then
Do
' Mémorise
ResultatRecherche.Nombre = ResultatRecherche.Nombre + 1
ReDim Preserve ResultatRecherche.Chemin(1 To ResultatRecherche.Nombre)
ReDim Preserve ResultatRecherche.Fichiers(1 To ResultatRecherche.Nombre)
ResultatRecherche.Chemin(ResultatRecherche.Nombre) = Chemin
ResultatRecherche.Fichiers(ResultatRecherche.Nombre) = lpFindFileData
' Initialise lpFindFileData (Variable texte uniquement)
lpFindFileData.cAlternate = String$(14, 0)
lpFindFileData.cFileName = String$(MAX_PATH, 0)
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Recherche dans les sous-répertoires---
hFindFile = FindFirstFile(Chemin & "*.*", lpFindFileData)
If (hFindFile <> INVALID_HANDLE_VALUE) Then
Do
' Si c'est un répertoire on continu le recherche
If (lpFindFileData.dwFileAttributes And _
FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
' Extraction du nom du répertoire
CheminRep = Mid$(lpFindFileData.cFileName, 1, _
InStr(1, lpFindFileData.cFileName, Chr$(0)) - 1)
' Attention dans les sous-répertoire aux
' répertoires . et .. (Retour répertoire parent)
' StrComp : plus rapide pour les comparaisons de chaine
If (StrComp(CheminRep, ".", vbTextCompare) = 1 And StrComp(CheminRep, "..", vbTextCompare) = 1) Then
' If (CheminRep <> "." ) And (CheminRep <> ".." ) Then
CheminRep = Chemin & CheminRep & "\"
List1.AddItem CheminRep
Rechercher = Rechercher(CheminRep, FichierR, ResultatRecherche)
End If
End If
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Retourne le nombre d'occurrences trouvées---
Rechercher = ResultatRecherche.Nombre
End Function
Private Sub Command1_Click()
' Alogtihme récursif
'---Déclaration des variables---
Dim ResultatRecherche As ListeFichier
Dim NombreOccurence As Long
Dim i
'---Recherche de tous les fichiers *.mp3 sur le lecteur C:\---
NombreOccurence = Rechercher("C:\", "*.mp3", ResultatRecherche)
' Toutes les informations de la recherche sont dans la variables ResultatRecherche
MsgBox NombreOccurence & " ont été trouvées (ou a été trouvé)" & Chr(13) & _
"Le premier fichier trouvé est : " & Trim$(ResultatRecherche.Chemin(1)) & _
Trim$(ResultatRecherche.Fichiers(1).cFileName)
End Sub
Private Sub Timer1_Timer()
List1.Text = Trim$(ResultatRecherche.Chemin(1))
End Sub
Private Function GetBaseName(ByVal Chaine As String, Optional ByVal with_extension As Boolean = True) As String
Dim i As Long
Dim length As Long
length = Len(Chaine)
For i = length To 1 Step -1
If StrComp(Mid$(Chaine, i, 1), "\", vbTextCompare) = 0 Then
Exit For
End If
Next i
If with_extension = True Then
GetBaseName = Mid$(Chaine, i + 1, i)
Else
GetBaseName = Mid$(Chaine, i + 1, i - 4)
End If
End Function
Marsh Posté le 27-11-2002 à 23:12:49
Code :
|
Marsh Posté le 28-11-2002 à 09:28:29
Spiritu4L a écrit a écrit : tiens voilà mon code eclate toi , et fais en sorte que ca marche ca m'aiderais [#d42a00]Option Explicit '---------------------------------------- '------Déclarations propres aux API------ '---------------------------------------- '---Les constantes--- Private Const MAX_PATH = 260 Private Const INVALID_HANDLE_VALUE = -1 Private Const FILE_ATTRIBUTE_READONLY = &H1 Private Const FILE_ATTRIBUTE_HIDDEN = &H2 Private Const FILE_ATTRIBUTE_SYSTEM = &H4 Private Const FILE_ATTRIBUTE_DIRECTORY = &H10 Private Const FILE_ATTRIBUTE_ARCHIVE = &H20 Private Const FILE_ATTRIBUTE_NORMAL = &H80 Private Const FILE_ATTRIBUTE_TEMPORARY = &H100 Private Const FILE_ATTRIBUTE_COMPRESSED = &H800 '---Les API--- Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _ (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _ (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long '---Les types--- Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type '---------------------------------------------- '------Déclarations propres à la fonction------ '---------------------------------------------- Private Type ListeFichier Fichiers() As WIN32_FIND_DATA Chemin() As String * MAX_PATH Nombre As Long End Type '-------------------------------------------------------- '---La fonction Rechercher : --- '--- Cette fonction recherche tous les fichiers dans --- '--- le répertoire spécifié et ses sous-repertoires --- '--- Elle retourne le nombre d'occurences trouvées --- '-------------------------------------------------------- Private Function Rechercher(Chemin As String, FichierR As String, _ ResultatRecherche As ListeFichier) As Long '---Déclaration des variables--- Dim lpFindFileData As WIN32_FIND_DATA Dim hFindFile As Long Dim lgRep As Long Dim CheminRep As String '---Recherche tous les fichiers demandés dans le répertoire Chemin--- hFindFile = FindFirstFile(Chemin & FichierR, lpFindFileData) If hFindFile <> INVALID_HANDLE_VALUE Then Do ' Mémorise ResultatRecherche.Nombre = ResultatRecherche.Nombre + 1 ReDim Preserve ResultatRecherche.Chemin(1 To ResultatRecherche.Nombre) ReDim Preserve ResultatRecherche.Fichiers(1 To ResultatRecherche.Nombre) ResultatRecherche.Chemin(ResultatRecherche.Nombre) = Chemin ResultatRecherche.Fichiers(ResultatRecherche.Nombre) = lpFindFileData ' Initialise lpFindFileData (Variable texte uniquement) lpFindFileData.cAlternate = String$(14, 0) lpFindFileData.cFileName = String$(MAX_PATH, 0) Loop Until FindNextFile(hFindFile, lpFindFileData) = 0 End If FindClose hFindFile '---Recherche dans les sous-répertoires--- hFindFile = FindFirstFile(Chemin & "*.*", lpFindFileData) If (hFindFile <> INVALID_HANDLE_VALUE) Then Do ' Si c'est un répertoire on continu le recherche If (lpFindFileData.dwFileAttributes And _ FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then ' Extraction du nom du répertoire CheminRep = Mid$(lpFindFileData.cFileName, 1, _ InStr(1, lpFindFileData.cFileName, Chr$(0)) - 1) ' Attention dans les sous-répertoire aux ' répertoires . et .. (Retour répertoire parent) ' StrComp : plus rapide pour les comparaisons de chaine If (StrComp(CheminRep, ".", vbTextCompare) = 1 And StrComp(CheminRep, "..", vbTextCompare) = 1) Then ' If (CheminRep <> "." ) And (CheminRep <> ".." ) Then CheminRep = Chemin & CheminRep & "\" List1.AddItem CheminRep Rechercher = Rechercher(CheminRep, FichierR, ResultatRecherche) End If End If Loop Until FindNextFile(hFindFile, lpFindFileData) = 0 End If FindClose hFindFile '---Retourne le nombre d'occurrences trouvées--- Rechercher = ResultatRecherche.Nombre End Function Private Sub Command1_Click() ' Alogtihme récursif '---Déclaration des variables--- Dim ResultatRecherche As ListeFichier Dim NombreOccurence As Long Dim i '---Recherche de tous les fichiers *.mp3 sur le lecteur C:\--- NombreOccurence = Rechercher("C:\", "*.mp3", ResultatRecherche) ' Toutes les informations de la recherche sont dans la variables ResultatRecherche MsgBox NombreOccurence & " ont été trouvées (ou a été trouvé)" & Chr(13) & _ "Le premier fichier trouvé est : " & Trim$(ResultatRecherche.Chemin(1)) & _ Trim$(ResultatRecherche.Fichiers(1).cFileName) End Sub Private Sub Timer1_Timer() List1.Text = Trim$(ResultatRecherche.Chemin(1)) End Sub Private Function GetBaseName(ByVal Chaine As String, Optional ByVal with_extension As Boolean = True) As String Dim i As Long Dim length As Long length = Len(Chaine) For i = length To 1 Step -1 If StrComp(Mid$(Chaine, i, 1), "\", vbTextCompare) = 0 Then Exit For End If Next i If with_extension = True Then GetBaseName = Mid$(Chaine, i + 1, i) Else GetBaseName = Mid$(Chaine, i + 1, i - 4) End If End Function |
tu m'escuseras, mais ton code je le connais ! essaye de le debuger c'est pas trés compliqué ! tu mets des points d'arrêts "Rouge", ou des message "msgbox" avec les valeur que tu souhaite récupérer ! c'est simple et efficace !
Marsh Posté le 28-11-2002 à 17:41:55
Hm , j'ai bien essayé ce que tu m'as dit de mettre dans les text le résultat de ma recherche des fichiers ".mp3" mais rien n'y fait ca ne marche pas . Je ne connais pas encore bien les API donc c un peu flou pour moi , donc si tu pouvais m'aider a effectuer la manoeuvre : jserais savué
Marsh Posté le 29-11-2002 à 18:08:46
Bah ué karl tu m'avais donné un code mais on ne voyait plus les chemin des mp3 dans la list
Marsh Posté le 29-11-2002 à 22:02:38
mmhh c moi qui a bu ?
Regarde bien la page, juste au dessus du code de macray, tu vois, il y a un message de moi, avec un peu de code, j'ai testé et ca marche au poil, ca ajoute le nom du fichier mp3 sans le chemin et sans l'extension.
Marsh Posté le 29-11-2002 à 22:05:44
Hm trop délire ton smiley , bon jvais tester ton code man
Marsh Posté le 29-11-2002 à 22:09:57
Euh apparement c pas moi qui est bu , vu que ca marcheuh pas , erreur d'execution 9
Marsh Posté le 30-11-2002 à 16:19:19
Bah je dois le remplacer par koi ?
Marsh Posté le 30-11-2002 à 21:33:21
hm hm je devine un peu mais c dur sérieux je sais pas par koi remplacé : ("L:\mp3\Berserk" ) pc je l'ai pas vu
Marsh Posté le 30-11-2002 à 22:21:42
Par "c:\" par exemple ou un de tes répertoires où tu stockes tes musiques ^_^
Marsh Posté le 30-11-2002 à 22:24:55
Comme je t'ai dit plus haut le code que tu m'as donné ca marche pas , ca efface les chemin de la listbox donc si tu pouvais m'envoyer ta source par mail ca serait cool , pc j'ai du merder , enfin je sais pas Spiritu4L@aol.com Tchao
Marsh Posté le 26-11-2002 à 15:45:02
J'ai trouvé une API qui scann le disque dur et qui me dit combien j'ai de fichier mp3 , j'aimerais en utilisant cette API que tous les fichiers que l'api compte en tant que .mp3 soit répertorié dans une listbox c'est possible ? Si oui comment ?
L'API en question
Option Explicit
'----------------------------------------
'------Déclarations propres aux API------
'----------------------------------------
'---Les constantes---
Private Const MAX_PATH = 260
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_READONLY = &H1
Private Const FILE_ATTRIBUTE_HIDDEN = &H2
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Const FILE_ATTRIBUTE_COMPRESSED = &H800
'---Les API---
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
'---Les types---
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
'----------------------------------------------
'------Déclarations propres à la fonction------
'----------------------------------------------
Private Type ListeFichier
Fichiers() As WIN32_FIND_DATA
Chemin() As String * MAX_PATH
Nombre As Long
End Type
'--------------------------------------------------------
'---La fonction Rechercher : ---
'--- Cette fonction recherche tous les fichiers dans ---
'--- le répertoire spécifié et ses sous-repertoires ---
'--- Elle retourne le nombre d'occurences trouvées ---
'--------------------------------------------------------
Private Function Rechercher(Chemin As String, FichierR As String, _
ResultatRecherche As ListeFichier) As Long
'---Déclaration des variables---
Dim lpFindFileData As WIN32_FIND_DATA
Dim hFindFile As Long
Dim lgRep As Long
Dim CheminRep As String
'---Recherche tous les fichiers demandés dans le répertoire Chemin---
hFindFile = FindFirstFile(Chemin & FichierR, lpFindFileData)
If hFindFile <> INVALID_HANDLE_VALUE Then
Do
' Mémorise
ResultatRecherche.Nombre = ResultatRecherche.Nombre + 1
ReDim Preserve ResultatRecherche.Chemin(1 To ResultatRecherche.Nombre)
ReDim Preserve ResultatRecherche.Fichiers(1 To ResultatRecherche.Nombre)
ResultatRecherche.Chemin(ResultatRecherche.Nombre) = Chemin
ResultatRecherche.Fichiers(ResultatRecherche.Nombre) = lpFindFileData
' Initialise lpFindFileData (Variable texte uniquement)
lpFindFileData.cAlternate = String$(14, 0)
lpFindFileData.cFileName = String$(MAX_PATH, 0)
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Recherche dans les sous-répertoires---
hFindFile = FindFirstFile(Chemin & "*.*", lpFindFileData)
If (hFindFile <> INVALID_HANDLE_VALUE) Then
Do
' Si c'est un répertoire on continu le recherche
If (lpFindFileData.dwFileAttributes And _
FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
' Extraction du nom du répertoire
CheminRep = Mid$(lpFindFileData.cFileName, 1, _
InStr(1, lpFindFileData.cFileName, Chr$(0)) - 1)
' Attention dans les sous-répertoire aux
' répertoires . et .. (Retour répertoire parent)
If (CheminRep <> "." ) And (CheminRep <> ".." ) Then
CheminRep = Chemin & CheminRep & "\"
Rechercher = Rechercher(CheminRep, FichierR, ResultatRecherche)
End If
End If
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Retourne le nombre d'occurrences trouvées---
Rechercher = ResultatRecherche.Nombre
End Function
Private Sub Command1_Click()
' Alogtihme récursif
'---Déclaration des variables---
Dim ResultatRecherche As ListeFichier
Dim NombreOccurence As Long
Dim i
'---Recherche de tous les fichiers *.mp3 sur le lecteur C:\---
NombreOccurence = Rechercher("C:\", "*.mp3", ResultatRecherche)
' Toutes les informations de la recherche sont dans la variables ResultatRecherche
MsgBox NombreOccurence & " ont été trouvées (ou a été trouvé)" & Chr(13) & _
"Le premier fichier trouvé est : " & Trim$(ResultatRecherche.Chemin(1)) & _
Trim$(ResultatRecherche.Fichiers(1).cFileName)
End Sub
---------------
º°) SkabsnowsurF Board Free Style (°º