begin process at 2012 02 17 03:06:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > DRIVEVIEW ==> ARBORESCENCE AFFICHANT LES LECTEURS LOGIQUES ET PHYSIQUES

DRIVEVIEW ==> ARBORESCENCE AFFICHANT LES LECTEURS LOGIQUES ET PHYSIQUES


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :4 804 / 624

Auteur : violent_ken

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
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
-Ke yPress
-KeyUp
-MouseDown
-MouseMove
-MouseUp
-Node Click



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
-Li neStyle
-Index
-hwnd
-BorderStyle
-Appearance
-Ind entation
-DisplayLogicalDrives
-DisplayPhysicalDri ves
-HideSelection
-LogicalDrivesString
-PhysicalD rivesString


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

Les Membres Club peuvent 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 !!

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) UTILITAIRE DE SANITIZATION DES DISQUES DURS/FICHIERS (SUPPRE...
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLE SHUTDOWN SCHEDULER : ARRÊTS PLANIFIÉS (LOCAL OU REMOT...
Source avec Zip Source .NET (Dotnet) COMMENT DÉMARRER UN PROCESSUS SUR PC DISTANT DE MANIÈRE CACH...
Source avec Zip Source avec une capture Source .NET (Dotnet) YET ANOTHER (REMOTE) PROCESS MONITOR
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMENT DÉTECTER LES PROCESSUS CACHÉS (VIRUS, ROOTKITS...) +...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) MON LECTEUR MP3 par kentharold
Source avec Zip Source .NET (Dotnet) CHANGEMENT DE LETTRE D'UN LECTEUR (XP & 2000) par NHenry
Source avec Zip Source avec une capture CLASSE SUR LES DISQUES/PARTITIONS ==> OBTENTIONS D'INFOS (CL... par violent_ken
Source avec Zip DETECTION DES LECTEURS par Zeratul456
COMMON DIALOG ET VOISINAGE RÉSEAU par Cameleon

Commentaires et avis

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

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

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 ?
++

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



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

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

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

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é^^
@+

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?

++

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 !!

@+

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

?
@+

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

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)

++ ;)

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

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,538 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales