FICHIERS_CACHES_LECTURE_SEULE

Soyez le premier à donner votre avis sur cette source.

Vue 6 032 fois - Téléchargée 514 fois

Description

Vous pouvez mettre tous les fichiers d'une même extension en Lecture seule ou en Fichiers cachés. L'opération se fait sur tous les fichiers cochés également. Vous pouvez aussi bloquer ou débloquer l'option: Affichage des fichiers cachés dans la base du registre. Code en VBA pour les dossiers cachés.

Source / Exemple :


voir zip

Conclusion :


Merci pour le code en VBA à:
http://warin.developpez.com/access/fichiers/

Codes Sources

Ajouter un commentaire

Commentaires

Messages postés
6987
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 octobre 2020
114
Merci à tout les 2 pour vos commentaires très constructifs.
Pour la ligne:
If (File.GetAttributes(Cheminfichier) And FileAttributes.ReadOnly) = FileAttributes.ReadOnly Then, j'ai pris l'exemple dans :
http://msdn.microsoft.com/en-us/library/system.io.file.setattributes.aspx.
Je vais donc essayer de suivre vos précieux conseils pour améliorer ce programme.
@+
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
Pas de grosses erreurs mais à l'ouverture du projet, oulala çà fait un peu peur ce gros bloc de code... pense à aérer un peu.

Sinon à la lecture de ton code :

1) Un fois que tu crée : "Dim a As New FolderBrowserDialog"

Pense à liberé l'objet avec a.Dispose, ou alors utilise un bloc Using :

Using a As New FolderBrowserDialog
[code]
End Using

Et utilise une variable explicite, "a" etant peu parlant

Idem pour tes controles "CheckBox1, ...CheckBox3.. etc"


2) Alors çà ... promets moi de ne plus jamais le faire (on oubli VB6) :

'Réglage du temps
For i = 1 To 100000
Next i

Utilise plutot "Thread.Sleep()"

De plus ta progressBar ne sert pas à grand chose, vu qu'elle ne reflete en rien l'occupation de ton appli

3) Pour les clés de registre, pourquoi utiliser l'API Win32, utilise la Class Registry (Microsoft.Win32)

4) Cette operation me parait un peu suspecte ?

If (File.GetAttributes(Cheminfichier) And FileAttributes.ReadOnly) = FileAttributes.ReadOnly Then

5) Pour ton tri de ListView, je te conseille de faire une classe a part

Genre :

Public Class ListViewColumnSorter Implements IComparer

Avec des attributs de classe propres

Public ColumnToSort As Integer
Public OrderOfSort As SortOrder
Public ObjectCompare As CaseInsensitiveComparer

Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
[... ]
End Function

Ensuite dans ta form1 tu peux faire :

Dans le constructeur de la Form1 : Private lvwColumnSorter As ListViewColumnSorter

Private Sub ListView1_ColumnClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick

If (e.Column = lvwColumnSorter.SortColumn) Then
If (lvwColumnSorter.Order = SortOrder.Ascending) Then
lvwColumnSorter.Order = SortOrder.Descending
Else
lvwColumnSorter.Order = SortOrder.Ascending
End If
Else
lvwColumnSorter.SortColumn = e.Column
lvwColumnSorter.Order = SortOrder.Ascending
End If

CType(sender, ListView).Sort()

End Sub


6) Attention à çà : Lbl_source.Text & "" & fichier.Text

Si on se trouve dans la racine (ex : C:) celà te donnera "C:" & "" & fichier.Text --> C:\\nomfichier.ext

7) Fini le VB6 : MsgBox("Affichage Fichiers cachés débloqué")
On fait du .net maintenant : MessageBox.Show("Message", "Titre", MessageBoxButtons.OK, MessageBoxIcon.Information, )

8) Ici "Dim MyKey As Object"
MyKey est visiblement une chaine, donc 'Dim MyKey As String'

9) La aussi tu as un tableau à 1 dimension : ListeFichier.GetUpperBound(0)
donc ne t'embete pas : ListeFichier.Length

10) Là aussi : Dim cmpt As Int32
ne t'embete pas avec la taille de l'int : Dim cmpt As Integer

11) Je ne suis pas sur mais tu peux, au lieu de : ShellExecute(Handle.ToInt32, "Open", File, Parametres, My.Application.Info.DirectoryPath, 1)
faire : Process.Start(File)

12) Tu fais comme tu veux, mais ce genre de chose :
.Columns.Add("Nom", 120, HorizontalAlignment.Left) 'titre, dimension colonne,alignement texte
.Columns.Add("Taille", 50, HorizontalAlignment.Right)
.Columns.Add("Date création", 120, HorizontalAlignment.Center)
.Columns.Add("Dernière modification", 120, HorizontalAlignment.Center)
.Columns.Add("Dernier accès", 120, HorizontalAlignment.Center)

vu que çà ne bouge pas, je le fais directement sur le composant à la création (via la PropertyGrid de VS)


Bon je vais arreter là pour le moment, car je n'ai plus trop le temps, et je pense qu'avec çà tu as encore pas mal de boulot pour améliorer ta source.

Mais sinon à part çà j'ai quand meme constaté qu'il y avait des choses pas trop mal, et felicitation pour le travail fournis.J

Et je le repete : je ne te dis pas tout çà pour te descendre mais afin que tu puisse t'améliorer !

Bon code.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,

WshShell = CreateObject("Wscript.Shell")

on atteint des sommets là, du VBS dans du DOTNET...

le framework a prévu des méthodes, faut s'en servir :)

http://msdn.microsoft.com/fr-fr/library/microsoft.win32%28VS.80%29.aspx

++

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.