[.NET2] REPRÉSENTATION GRAPHIQUE DES CLUSTERS D'UN VOLUME

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 1 mars 2006 à 23:48
 Profil bloqué - 3 déc. 2006 à 23:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36335-net2-representation-graphique-des-clusters-d-un-volume

Profil bloqué
3 déc. 2006 à 23:03
Bravo Willi pour ce code
Je me suis servi de l'idée pour les feuilles Tableclustntfs et Tableclustfat du projet "Acces Direct Disque"
Allez 10/10 et c'est mérité
Merci
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
24 nov. 2006 à 23:23
Salut,

bon exemple d'application du ControlCode FSCTL_GET_VOLUME_BITMAP. Je suis peu habitué au *.Net, mais çà peut m'être utile pour coder en VB6 ;)

Pour le code, c'est identé, commenté, propre, çà remplit très bien la fonction demandée, donc je note 10 (même si je ne peux apprécier toutes les subtilités du *.Net)

@+ et bonne prog.
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
21 avril 2006 à 08:26
Oui mais la c'est une autre histoire :)
Je me pencherais dessus à l'occasion
VBSorcier Messages postés 102 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 29 avril 2007
20 avril 2006 à 22:00
Bravo !(9/10)
Avant de faire une appli de defrag (ou en meme temps), serai-ce possible de faire comme le défragmenteur d'XP, c'est à dir mettre en rouge les fichiers fragmentés (et eventuellement en vert le fichier swap) ?

De toute façon il faudra bien que tu differencie les clusters des fichiers fragmenté et des autres pour pouvoir defragementer :p

a+
VBSorcier
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
6 mars 2006 à 15:35
Merci Dalida et Eldim :)
Pour une appli de défrag je pense que sa va venir dans mes prochaines sources...
J'attend juste un livre sur les api non documentées de microsoft. J'ai déjà la base avec la fonction GetMapVolume pour avoir la position des clusters.

En attendant amuses-toi bien avec cette source :)
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
6 mars 2006 à 13:49
Bien vu Dalida !
ça marche très bien
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
6 mars 2006 à 13:31
salut,

bravo Willi ça tourne joliment et ce n'est pas s'en me rappeler DiskKeeper...

ton code me semble une excellente base de travail pour coder une appli de défrag !
d'autant qu'il y a encore plein de possibilités !

je l'ai déjà modifié en ne mettant que les disques fixes et en affichant le nom du volume. mais aussi en mettant à profit la proposition de ELDIM (lecteur du system sélectionné par défaut.

Dim index As Integer = -1
For Each drive As DriveInfo In My.Computer.FileSystem.Drives
If drive.DriveType = DriveType.Fixed Then
index = cmbDrive.Items.Add(String.Format("{0} ({1})", drive.VolumeLabel, drive.Name))
If drive.Name.StartsWith(System.Environment.SystemDirectory.Substring(0, 1)) = True Then
cmbDrive.SelectedIndex = index
End If
End If
Next

je n'ai pas encore lu la classe graphique mais à la vue des commentaires précédents je suis confiant.

(et allez le deuxième 9/10 de la journée ! sur trois sources chargées c'est un excellent début de semaine !)

[Dalida]
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
2 mars 2006 à 11:14
Ah ok
Chez moi ça seléctionne le D: lol
car mon portable n'a pas de lecteur de disquete...

sinon tu peux sélectionner le drive du sysdir c'est plus sur...

ou mieux ne sélectionner que les disques durs...
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
2 mars 2006 à 11:03
Eldim -> non non ce n'est pas une erreur j'ai mis index=1 pour selectionner le lecteur c: directement.
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
2 mars 2006 à 10:54
Ben dans la combo tu as mis selecteditem=1 (ou un truc du genre je sais plus)
or il faut mettre 0 c'est tout... c'est un petit rien
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
2 mars 2006 à 10:38
Eldim je ne vois pas ou est le problème avec le combo....
Sinon de distinguer les fichiers en cours d'utilisation la honnetement j'en sais vraiment rien...question à étudier :)

Fragag effectivement c'est plus rapide que choose.
J'ai fait des test sur le meme volume et chronométrer avec la classe stopwatch le temps d'execution de Drawmap.
Avec Choose j'obtiens 56 millisecondes alors qu'avec ta méthode j'obtiens 35 millisecondes.
Merci Fragag pour cette amélioration de perf.
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
2 mars 2006 à 08:45
Y a juste un légé bug : la combo commence à 0 pas à 1... (dans le load form)
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
2 mars 2006 à 08:43
Bonjour,
Super source j'ai mis 10
petite question comme ça :
serait-il possible de visualiser les fichiers en cours d'utilisation en rouge ?
cs_FraGag Messages postés 81 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 18 avril 2008
2 mars 2006 à 05:44
J'ai regardé rapidement et j'ai vu la fonction GetBit()... J'aurais plutôt fait, au lieu de Choose(bit, 1, 2, ...), 2 ^ bit ; dans ce dernier cas, il faut remplacer la boucle dans DrawMap() avec la variable curBit pour qu'elle prenne des valeurs de 0 à 7 et non de 1 à 8. Je ne sais pas par contre quelle méthode est la plus rapide.

2 ^ 0 = 1
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 3 = 8
2 ^ 4 = 16 ...
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
2 mars 2006 à 00:16
Merci Econs pour cette brève explication,
J'ai un peu pataugé avec l'utilisation des fonctions graphiques et le mixage de 2 couleurs....
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
1 mars 2006 à 23:48
Salut,

Ta fonction MixColors avait effectivement un petit souci.
Le passage par ColorTranslator.ToOle est inutile (et source d'erreur en plus).

Tu transformais le Rouge dans un format que FromArgb() ne savait pas lire. Et donc FromArgb renvoyait du bleu.


En paramètre de MixColors, tu plaçais des données sortant de toArbg(). Donc pour les utiliser, une seule transformation suffit : un passage à travers FromArgb().


Il est 23h50, si je ne suis pas clair, je réexpliquerai çà demain, après un bon dodo.
Voici le code résultat en tous cas :



Private Function MixColors(ByVal color1 As Integer, ByVal color2 As Integer, ByVal opacity As Decimal) As Integer

Dim Red1, Green1, Blue1 As Byte
Dim Red2, Green2, Blue2 As Byte

'Dim col1 As Integer = ColorTranslator.ToOle(Color.FromArgb(color1))
'Dim col2 As Integer = ColorTranslator.ToOle(Color.FromArgb(color2))

'Sépare les couleurs de color1
Red1 = Color.FromArgb(color1).R
Green1 = Color.FromArgb(color1).G
Blue1 = Color.FromArgb(color1).B

'Sépare les couleurs de color2
Red2 = Color.FromArgb(color2).R
Green2 = Color.FromArgb(color2).G
Blue2 = Color.FromArgb(color2).B

'Donne la nouvelle couleur... :D
Dim mixCol As Integer = Color.FromArgb((Red1 * opacity + Red2 * (1 - opacity)), (Green1 * opacity + Green2 * (1 - opacity)), (Blue1 * opacity + Blue2 * (1 - opacity))).ToArgb

Return mixCol

End Function
Rejoignez-nous