Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DRIVEVIEW ==> ARBORESCENCE AFFICHANT LES LECTEURS LOGIQUES ET PHYSIQUES


Information sur la source

Catégorie :Fichier / Disque Classé sous : disque, logique, physique, lecteur, drive Niveau : Initié Date de création : 25/03/2007 Date de mise à jour : 27/03/2007 14:38:35 Vu / téléchargé: 3 878 / 556

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
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

  • 'Dans le zip, avec un exemple
  • 'L'exemple montre aussi comment utiliser la propriétés Nodes du DriveView
'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)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

26 mars 2007 19:14:49 :
Modifications pensées par Renfield, et bug cité par PCPT
27 mars 2007 13:38:00 :
Ajouté un Enum pour le borderstyle + corrigé définitivement le bug concernant la string Physique + corrigé bug mis en avant par PCPT + nouveau screenshot
27 mars 2007 13:42:15 :
J'avais oublié de supprimé les répertoires de subversion !!
27 mars 2007 14:31:36 :
Ajouté les properties Nodes et SelectedItems en écriture + ajouté la fonctions Drives pour récupérer toutes les fonctions de la classe d'infos sur les disques + ajouté un key dans le IMG pour pouvoir afficher un drive "inaccessible"
27 mars 2007 14:38:36 :
SCREENSHOT !!

Commentaires et avis

signaler à un administrateur
Commentaire de PCPT le 26/03/2007 00:48:05 administrateur CS

salut,
petite erreur "disques logiques" "disques logiques" ;)
(voir capture)

je regarderai le code mardi
bonne soirée

signaler à un administrateur
Commentaire de Galain le 26/03/2007 01:01:00

Très beau travail
Je vois que tu es un assidu des User Control et un as en la matière
10/10

signaler à un administrateur
Commentaire de romagny13 le 26/03/2007 01:14:33

humm j'aurais bien regarder ... mais c'est en vb6 :x
tu fais du vb6 sur Vista :p ?
++

signaler à un administrateur
Commentaire de Renfield le 26/03/2007 09:25:49 administrateur CS

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.)



signaler à un administrateur
Commentaire de violent_ken le 26/03/2007 13:14:36

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, @+

signaler à un administrateur
Commentaire de Renfield le 26/03/2007 13:38:34 administrateur CS

je me suis ma exprimé :
While...Wend c'est un héritage des versions de VB plus anciennes...
"maintenant", on dit Do While ... Loop

pour le Mid dans la partie gauche, c'est une petite astuce qui permet d'eviter de réallouer n fois l'espace necessaire au stockage de la chaine ; les caractères sont modifiés sur place...(pour ca que je fais un PermuteString = s, afin d'allouer une première fois une chaine de taille suffisante ^^)

signaler à un administrateur
Commentaire de violent_ken le 26/03/2007 19:00:14

Ah pardon ;)
Mais y a t-il un gain de vitesse à utiliser Do While ... Loop, ou ce n'est que de la forme ?

Merci pour les précisions, @+

signaler à un administrateur
Commentaire de violent_ken le 26/03/2007 19:21:23

Voilà, j'ai mis à jour, mais pas le screenshot ;)

Enfin bon, çà ne bug plus en réalité^^
@+

signaler à un administrateur
Commentaire de PCPT le 27/03/2007 12:14:02 administrateur CS

salut,
très bon ;)
par contre il faut mettre un enum pour le borderstyle (essaye avec >1....)

et une bizzarerie : chez moi n'affiche que les 2 permiers disques logiques (sur bien plus)
une idée?

++

signaler à un administrateur
Commentaire de violent_ken le 27/03/2007 13:40:11

Salut, et merci ;)

Pour le enum, je l'ai fait.
Pour le bug de chez toi : c'est normal, j'avais oublié de changer une valeur (fonction GetLogicalDriveList) dans la dernière mise à jour ==> corrigé.
Pour le premier bug que tu m'avais cité ("physique") ==> je n'avais en fait pas résolu en profondeur le bug, maintenant c'est fait.
Et j'ai également mis à jour le screen ;)


Cette fois c'est bon je crois !!

@+

signaler à un administrateur
Commentaire de violent_ken le 27/03/2007 13:53:42

Heu en fait non, j'ai pas fini ;)

Je vais rajouter également les properties Nodes et SelectedItem en écriture.



Par contre j'hésite : je prend un TreeView v5.0 (actuellement c'en est un) ou un TreeView v6.0 ??

Sachant que le 5 a l'avantage d'accepter le style XP avec un *.manifest, ce qui n'est pas le cas du 6. Mais sachant également que le 6 à de nouvelles properties (notamment Forecolor qui est important).

?
@+

signaler à un administrateur
Commentaire de PCPT le 27/03/2007 14:09:30 administrateur CS

beh voilà c'est tout bon :p
reste éventuellement à personnaliser l'affichage du treeview (voir dans les sources de Yomm je crois)

tite question, comment accède-t'on à GetStringDriveType par l'UC?
si on ne peut pas (pas trouvé en tout cas), çà peut être utile (tant string que valeur int)

un 10 de plus, beau boulot ;)

signaler à un administrateur
Commentaire de PCPT le 27/03/2007 14:16:19 administrateur CS

on s'est croisé
beh ma réponse peut être une piste ;)
(sinon je dirais 5, idem pour l'imagelist, effets possibles pour le 32px si tu veux changer les icônes. à vérifier)

++ ;)

signaler à un administrateur
Commentaire de violent_ken le 27/03/2007 14:32:04

Re, alors :

- on accède aux fonctions de la classe clsDiskInfo (donc toute les infos disques y compris strDriveType) avec la méthode Drives du UserControl
- je garde la v5 du TreeView
- j'ai ajouté les propriétés Nodes et SelectedItem en écriture
- ajouté une key dans le IMG pour pouvoir afficher les disques inaccessibles (voir exemple et screenshot pour comprendre)
- MAJ de l'exemple et du screen (le voir pour comprendre)


Merci pour la note ;)
@+

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

connecter un lecteur réseau [ par gaby33 ] Je réalise un programme qui récupère des données sur une bande DAT, et les place sur un des disques de mon snap server ( c'est un serveur de stockage Copier un fichier du disque dur Sur un lecteur réseau [ par Blasfem ] Bonjour à tous,Je cherche à copier un fichier (n'importe quelle nature, n'importante quelle taille) sur un lecteur réseau .La fonction FileCop probleme avec drive et dir [ par titigenki ] En fait je demande à l'utilisateur d'entrée le disque et ke répertoire ou se trouve le fichier surlequel il désire travaillé. Mon problème c comment f Emulateur lecteur de disque [ par virtual ] bonjour à tousje cherche à émuler un lecteur disque soit Reseau,physique ou floppy avec les fonction de base:enregeister,lecture et si possible execut formater un lecteur logique sous xp [ par douns96 ] je vouddrai connaitre le code pour formater un DD avec une part. logique sous xp pro meme la com. format.com ne fonctionne pas.merci et bonne continua Problème MutliThread VB.NET [ par Pym Corp ] VB.NET Salut, voilà je cherche à modifier une source de blanc : http://www.vbfrance.com/code.aspx?ID=18225 Cette source liste tous les r&# detection disque dur [ par RMSURACILE ] Bonjours, ma question va peux etre paraitre obsolete mais je ne trouve pas la reponse.J'ai un code (qui fonctionne) qui detecte les disques present su Selectionner un lecteur [ par TomTom27 ] Bonjour,Je veux selectionner graphiquement un lecteur avec l'objet drive_selec.Je procede de la maniere suivante:Drive_Selection.Drive="a:"Drive_ Nombre total de secteurs d'un disque physique [ par windob ] Bonjour,Je suis actuellement sur un projet pour lequel j'ai besoin de connaitre le nombre total de secteur du disque dur (physique et non logique).J'a Détecer la présence d'un disque amovible et la présence d'un CD dans le lecteur de CD [ par Razaphi ] Salut les Codeurs. J'ai un problème. Voila, je voudrai savoir comment détecter automatiquement la presence d'un disque amovible dans mon application e


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,671 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.