oui, mais personne n'est au courant car ça ne marque pas de nouveau message et comme je voulais avoir des tests sur d'autres PC ... donc ce n'est pas modifier mais supprimer le vieux post qu'il faut faire
il faut trancher dans le message à la machette
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Moi aussi, a part que ma clé USB est prise pour une disquette
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL
Voici une autre façon de faire Mais Heis, ta clé USB sera prise pour une disquette (tu sais peut-être comment récupérer ce type d'infos sur la clé USB ?)
Dans le code qui suit, je ne récupère pas le nom du volume lorsque c'est une disquette ça évite le test sur le lecteur.
Structure DrivesInfos
Nom.s ; nom du drive ex : A:\ ou D:\
NomAfficher.s ; Par exemle Disquette 3 (A:) ou Système (C:) ou (E:)
Type.l ; le type CD etc.
EndStructure
NewList Drives.DrivesInfos() ; liste chainée pour stocker tous les drives
Procedure GetAllDrives()
Lettre = 65 ; Ascii de 'A'
MaskDrive = GetLogicalDrives_() ; récupère le Mask des drives
Mask = 1 ; = 0000 0000 0000 0000 0000 0000 0000 0001 <-- bit B0
lpFileSystemNameBuffer.s = Space(256)
For i = 1 To 32 ; 32 bits à tester
If MaskDrive & Mask ; teste le bit B0 etc jusqu'à B31
AddElement(Drives())
Drives()\Nom = Chr(Lettre)+":\"
Drives()\NomAfficher = Space(256)
Drives()\NomAfficher = ""
; Récupère le type de Drive
Drives()\Type = GetDriveType_(Drives()\Nom)
If Drives()\Type <> #DRIVE_REMOVABLE ; c'est un lecteur de disquette, on ne récupère pas
; le nom de volume pour éviter les tests sur le lecteur
GetVolumeInformation_(Drives()\Nom,Drives()\NomAfficher,256,0,0,0,lpFileSystemNameBuffer,256)
EndIf
If Len(Drives()\NomAfficher)
Drives()\NomAfficher = UCase(Left(Drives()\NomAfficher, 1)) + LCase(Mid(Drives()\NomAfficher, 2, Len(Drives()\NomAfficher)-1))
Drives()\NomAfficher = Drives()\NomAfficher + " ("+ Chr(Lettre) + ":)"
Else
If Drives()\Type = #DRIVE_REMOVABLE ; lecteur de disquette
Drives()\NomAfficher = "Disquette 3" + Chr(189) + " ("+ Chr(Lettre) + ":)"
Else
Drives()\NomAfficher = "("+ Chr(Lettre) + ":)"
EndIf
EndIf
EndIf
Mask << 1
Lettre + 1
Next i
EndProcedure
GetAllDrives()
; Affiche les drives :
ForEach Drives()
Debug "Lecteur : " + Drives()\nom
Debug Drives()\NomAfficher
Debug ""
Next
On pourrait améliorer un peu le code que je viens de poster en commençant la boucle for i à 65 jusqu'à 97 et supprimer la variable Lettre et donc remplacer les chr(Lettre) par des Chr(i).
Structure DrivesInfos
Nom.s ; nom du drive ex : A:\ ou D:\
NomAfficher.s ; Par exemle Disquette 3 (A:) ou Système (C:) ou (E:)
Type.l ; le type CD etc.
EndStructure
NewList Drives.DrivesInfos() ; liste chainée pour stocker tous les drives
Procedure GetAllDrives()
MaskDrive = GetLogicalDrives_() ; récupère le Mask des drives
Mask = 1 ; = 0000 0000 0000 0000 0000 0000 0000 0001 <-- bit B0
lpFileSystemNameBuffer.s = Space(256)
For i = 65 To 97 ; 32 bits à tester
If MaskDrive & Mask ; teste le bit B0 etc jusqu'à B31
AddElement(Drives())
Drives()\Nom = Chr(i)+":\"
Drives()\NomAfficher = Space(256)
Drives()\NomAfficher = ""
; Récupère le type de Drive
Drives()\Type = GetDriveType_(Drives()\Nom)
If Drives()\Type <> #DRIVE_REMOVABLE ; c'est un lecteur de disquette, on ne récupère pas
; le nom de volume pour éviter les tests sur le lecteur
GetVolumeInformation_(Drives()\Nom,Drives()\NomAfficher,256,0,0,0,lpFileSystemNameBuffer,256)
EndIf
If Len(Drives()\NomAfficher)
Drives()\NomAfficher = UCase(Left(Drives()\NomAfficher, 1)) + LCase(Mid(Drives()\NomAfficher, 2, Len(Drives()\NomAfficher)-1))
Drives()\NomAfficher = Drives()\NomAfficher + " ("+ Chr(i) + ":)"
Else
If Drives()\Type = #DRIVE_REMOVABLE ; lecteur de disquette
Drives()\NomAfficher = "Disquette 3" + Chr(189) + " ("+ Chr(i) + ":)"
Else
Drives()\NomAfficher = "("+ Chr(i) + ":)"
EndIf
EndIf
EndIf
Mask << 1
Next i
EndProcedure
GetAllDrives()
; Affiche les drives :
ForEach Drives()
Debug "Lecteur : " + Drives()\nom
Debug Drives()\NomAfficher
Debug ""
Next
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL