Salut,
Ta question n'est pas claire : on ne sait pas si tu cherches à lister l'ensemble des fichiers wav ou si tu veux utiliser ton application par défaut dès que tu vas cliquer sur le dossier "Ma musique". Evidemment cela n'a rien avoir.
Pour le second cas, la MSDN est la première chose à voir. Si rien de concluant, regarder la base de registre.
Pour le premier cas
procedure FindFiles(FilesList: TStringList; StartDir, FileMask: string); var SR: TSearchRec; DirList: TStringList; IsFound: Boolean; i: integer; begin if StartDir[length(StartDir)] <> '\' then StartDir := StartDir + '\'; IsFound :=FindFirst(StartDir+FileMask, faAnyFile-faDirectory, SR) = 0; while IsFound do begin FilesList.Add(StartDir + SR.Name); IsFound := FindNext(SR) = 0; Application.ProcessMessages; end; FindClose(SR); DirList := TStringList.Create; IsFound := FindFirst(StartDir+'*.*', faAnyFile, SR) = 0; while IsFound do begin if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then DirList.Add(StartDir + SR.Name); IsFound := FindNext(SR) = 0; Application.ProcessMessages; end; FindClose(SR); for i := 0 to DirList.Count - 1 do FindFiles(FilesList, DirList[i], FileMask); DirList.Free; end;
procedure List_Type_File(AFolder, Extension:String;AListBox:TListBox); var FilesList: TStringList; begin FilesList := TStringList.Create; try AListBox.Clear; FindFiles(FilesList,AFolder,Extension); AListBox.Items.Assign(FilesList); finally FilesList.Free; end;
A appeler comme cela List_Type_File('C:\','Wav',ListBox1)
Pour le random : je vois pas ou est le probleme. Tu crée une StringList avec le nom des fichiers wav sélectionnés. Tu appelles un random et si la valeur renvoyée est supérieure au nombre d'Items-1, bien tu rappelles ta fonction, si la valeur n'est pas supérieure il t'est facile de récupérer le nom du fichier correspondant et de lancer ce fichier wav via un TMediaPlayer. J'ai pas regardé mais cela m'étonnerait qu'un tel exemple ne soit pas sur le site
|