Lister tous les lecteurs
Publié : jeu. 31/juil./2008 17:47
Un petit code pour lister tous les lecteurs, leur type (disquette, disque dur, cd-rom), et leur nom
Code : Tout sélectionner
Procedure GetDrive(Search_Type.l = 63)
Structure DriveInfos
Letter.s
Type.l
Name.s
EndStructure
Global NewList Drive.DriveInfos()
#GetDrive_REMOVABLE = 1 ; Disque amovible
#GetDrive_FIXED = 2 ; Disque dur
#GetDrive_REMOTE = 4 ; Disque réseau
#GetDrive_CDROM = 8 ; Lecteur cd
#GetDrive_RAMDISK = 16 ; Lecteur RAM
#GetDrive_UNKNOWN = 32 ; Inconnu
Protected DriveString_Length.l, DriveString.l, DriveIndex.l, FileInfo.SHFILEINFO
; On vide la liste
ClearList(Drive())
CoInitialize_(0)
; On récupère la liste des lecteurs
DriveString_Length = GetLogicalDriveStrings_(0, 0)
*DriveString = AllocateMemory(DriveString_Length)
GetLogicalDriveStrings_(DriveString_Length, *DriveString)
For DriveIndex = 0 To DriveString_Length - 4 Step 4
AddElement(Drive())
Drive()\Letter = PeekS(*DriveString + DriveIndex) ; lettre
Drive()\Type = GetDriveType_(@Drive()\Letter) ; type de lecteur
If Drive()\Type & Search_Type
SHGetFileInfo_(Drive()\Letter, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_DISPLAYNAME)
Drive()\Name = PeekS(@FileInfo\szDisplayName)
Else
DeleteElement(Drive())
EndIf
Next
FreeMemory(*DriveString)
CoUninitialize_()
EndProcedure