Driveview ==> arborescence affichant les lecteurs logiques et physiques

Soyez le premier à donner votre avis sur cette source.

Vue 6 081 fois - Téléchargée 723 fois

Description

Salut, ce code (UserControl) est basé sur un treeview, il affiche les lecteurs logiques et physiques présents sur le PC. Les icones des lecteurs sont affichées.

Voici les différents events gérés par le contrôle DriveView :

-Click
-Collapse
-DblClick
-Expand
-KeyDown
-KeyPress
-KeyUp
-MouseDown
-MouseMove
-MouseUp
-NodeClick

Voici les différentes fonctions du UserControl :

-Refresh (rafraichit la vue)
-IsSelectedDriveAccessible (booléenne qui renvoie si oui ou non le lecteur sélectionnée est accessible)
-Clear (vide la vue)
-GetVisibleCount (identique au Treeview)
-HitTest (identique au treeview)
-GetSelectedDrive (récupère toutes les infos dispos sur le lecteur : taille, secteurs, clusters, nom, n° de série...)
-Drives (permet de récupérer les fonctions de la classe clsDiskInfos ==> permet de récuperer toute les infos que l'on veut sur les disques)

Evidemment, les propriétés Nodes et SelectedItem sont gérées de la même façons que pour un TV normal (lecture + écriture).

Les différents propriétés :

-Sorted
-SelectedItem
-Nodes
-Object
-Style
-LineStyle
-Index
-hwnd
-BorderStyle
-Appearance
-Indentation
-DisplayLogicalDrives
-DisplayPhysicalDrives
-HideSelection
-LogicalDrivesString
-PhysicalDrivesString

Un exemple montre succintement comment récupérer des infos sur les disques sélectionnés, et à quoi servent les propriétés PhysicalDrivesString, LogicalDrivesString, DisplayLogicalDrives, DisplayPhysicalDrives.

Source / Exemple :


'Dans le zip, avec un exemple
'L'exemple montre aussi comment utiliser la propriétés Nodes du DriveView

Conclusion :


Ce code est relativement simple.

Si vous voyez des bugs, prévenez moi !

De même, si vous avez des suggestions, remarques, conseils, commentaires...etc, n'hésitez pas ! Et notez également svp ;)

@+

(compatible Windows Vista)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
28 -
salut,
petite erreur "disques logiques" "disques logiques" ;)
(voir capture)

je regarderai le code mardi
bonne soirée
cs_Galain
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6 -
Très beau travail
Je vois que tu es un assidu des User Control et un as en la matière
10/10
romagny13
Messages postés
710
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2 -
humm j'aurais bien regarder ... mais c'est en vb6 :x
tu fais du vb6 sur Vista :p ?
++
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
que de progrès ces derniers temps, c'est du bon boulot...

survollé le code, j'ai vu :

If hDrive = INVALID_HANDLE_VALUE Then
CloseHandle hDrive
pas besoin de faire le CloseHandle, pas de handle valide a fermer.

pour le GetMediaType, tu devrai mettre un
Case Else: GetMediaType = "Format unknown"

While...Wend a remplacer par Do While...Loop (VB4...)

String$(255, 0) => Space$(255)
certain bench disent effectivement que c'est plus rapide avec Space$

GetLogicalDrivesList pourrait finir ainsi :

lngLen = (lngLen \ 4) - 1

'redimensionne le tableau
ReDim s(lngLen)

For x = 0 To lngLen
s(x) = Mid$(strBuffer, 4 * x + 1, 3)
Next x

car là, tu conserve le \0 final, et tu récupère un element supplementaire (vide) dans ton tableau...

PermuteString pourrait etre :
Private Function PermuteString(ByRef s As String) As String
Dim x As Long
PermuteString = s

For x = 1 To Len(s) Step 2
Mid$(PermuteString, x, 2) = Mid$(s, x + 1, 1) & Mid$(s, x, 1)
Next x
End Function
(moins d'allocation nécessaires pour la chaine.)
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Salut, merci pour les commentaires ;)
Dans l'ordre :

PCPT ==> lol oui, la faute au copier/coller ;) Je changerais ce soir.

Galain ==> héhé oui, j'aime bien les usercontrol et les modules de classe, comme çà on peut réutiliser son code déjà prêt sans y retoucher^^ Et merci pour la note ;)

Romagny13 ==> Ce bon vieux VB6 tourne toujours bien, donc je garde ^^ Par contre c'est Vista qui va peut être passer à la trappe...la faute à de nombreux problèmes de performances et de compatibilité (et ces ***** de BSOD)

Renfield ==> merci pour les conseils, je note et je mettrais à jour
-"String$(255, 0) => Space$(255)..." -> c'est bon à savoir
-VB4 -> erf, je savais pas que VB4 connaissais pas Wend
-"Mid$(PermuteString, x, 2) = Mid$(s, x + 1, 1) & Mid$(s, x, 1)" -> je ne pensais pas qu'on pouvais mettre du Mid$ dans la partie gauche de l'affectation ! Je viens encore d'apprendre un truc...

Merci, @+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.