Classe de gestion des fichiers/dossiers ==> infos (dates, copyright...), listing, copier, corbeille, boites de dialogue ...

Soyez le premier à donner votre avis sur cette source.

Vue 11 677 fois - Téléchargée 1 599 fois

Description

Ce code est une classe qui permet de faire différentes actions sur les fichiers et les dossiers, à savoir :
-liste les sous-dossiers contenus dans un dossier
-liste les fichiers contenus dans un dossier
-change les attributs
-loade un fichier en string
-renomme un fichier/dossier
-obtient le dossier parent du dossier spécifié
-créé un fichier vierge et renvoie son handle
-détermine si le path est un root
-obtient le programme associé à un fichier
-obtient le nom court
-obtient le path court
-copie un fichier
-obtient les dossier depuis un path
-obtient le type du fichier
-affiche la boite de dialogue "Choix du dossier Dossier..."
-obtient la taille d'un fichier, même si celle ci est supérieure à 4Go (long)
-teste l'existence d'un dossier
-teste l'existence un fichier
-renvoie la terminaison d'un fichier/path
-obtient un fichier depuis un path
-obtient un drive depuis un path
-tue un fichier
-obtient une info sur un executable
-obtient un path spécial (dossier temp, bureau...)
-créé un dossier
-obtient des infos sur les fichiers et les dossiers
-supprime un dossier
-envoye à la corbeille fichier/dossier
-déplace fichier/dossier
-affiche boite de dialogue "Propriétés du fichier"
-affiche boite de dialogue "Choix d'un répertoire"
-affiche boite de dialogue Run (executer)
-affiche boite de dialogue Sauvegarder
-affiche boite de dialogue Ouvrir
-sauvegarde directe d'un fichier texte (ou binaire) à l'aide d'une string contenant les données à sauvegarder

Informations disponibles pour les fichiers :
-File
-FileDrive
-FileExtension
-FileDirectory
-FileType
-AssociatedExecutableProgram
-FileSize
-FileCompressedSize
-CreationDate
-LastModificationDate
-LastAccessDate
-FileAttributes
-IsHidden
-IsReadOnly
-IsSystem
-IsNormal
-ShortName
-ShortPath
-EXECompanyName
-EXEFileDescription
-EXEFileVersion
-EXEInternalName
-EXELegalCopyright
-EXEOriginalFileName
-EXEProductName
-EXEProductVersion

Informations disponibles pour les dossiers :
-Folder
-FolderDrive
-CreationDate
-LastModificationDate
-LastAccessDate
-FolderAttributes
-IsHidden
-IsReadOnly
-IsSystem
-IsNormal
-ShortPath
-ParentDir

Cette classe utilise:
-PAS DE FileSystemObject (trop lent et inutile de recoder une classe pour l'utiliser ^^)
-PAS DE commande VB genre Dir, MkDir, Kill... (je fais pas confiance...)
-QUE DES APIS (parce que çà marche toujours au poil...)

Je remercie ShareVB pour sa procédure qui utilise FindFirstFile...etc. pour lister les fichiers. Cà a été un gain de temps pour moi !

Source / Exemple :


'Liste des APIs utilisées :

'-------------------------------------------------------
'APIS
'-------------------------------------------------------
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As Fichier) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hWndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Private Declare Function GetFileSizeEx Lib "kernel32" (ByVal hFile As Long, lpFileSize As Currency) As Boolean
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
Private Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileSpec As String, ByVal dwFileAttributes As Long) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
Private Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal pszPath As String) As Long
Private Declare Function PathIsRoot Lib "shlwapi.dll" Alias "PathIsRootA" (ByVal pszPath As String) As Long
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Any) As Long
Private Declare Function GetFileInformationByHandle Lib "kernel32" (ByVal hFile As Long, lpFileInformation As BY_HANDLE_FILE_INFORMATION) As Long
Private Declare Function PathStripToRoot Lib "shlwapi.dll" Alias "PathStripToRootA" (ByVal pszPath As String) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private Declare Function GetCompressedFileSize Lib "kernel32" Alias "GetCompressedFileSizeA" (ByVal lpFileName As String, lpFileSizeHigh As Long) As Long
Private Declare Function FindNextFile Lib "kernel32.dll" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function PathFindExtension Lib "shlwapi" Alias "PathFindExtensionA" (ByVal pPath As String) As Long
Private Declare Function lstrcpyA Lib "kernel32" (ByVal RetVal As String, ByVal Ptr As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" (ByVal Ptr As Any) As Long
Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare Function PathRemoveFileSpec Lib "shlwapi" Alias "PathRemoveFileSpecA" (ByVal pPath As String) As Long
Private Declare Function PathRemoveBackslash Lib "shlwapi.dll" Alias "PathRemoveBackslashA" (ByVal pszPath As String) As Long
Private Declare Function GetFileVersionInfo Lib "Version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Any) As Long
Private Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
Private Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long, ByVal Length As Long)
Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Private Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long
Private Declare Function SHRunDialog Lib "shell32" Alias "#61" (ByVal hOwner As Long, ByVal Unknown1 As Long, ByVal Unknown2 As Long, ByVal szTitle As String, ByVal szPrompt As String, ByVal uFlags As Long) As Long
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long

Conclusion :


Tout est dans le *.zip (classes et exemple d'utilisation).

Après les services, les processus, les disques, voilà ma classe personnelle sur les fichiers !

Laissez bien entendu vos commentaires et vos notes.

Merci, @+

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
(Note : cette source est entièrement contenue dans cette nouvelle source : http://www.vbfrance.com/codes/FILESYSTEMLIBRARY-TOUT-FSO-SUR-FICHIERS-DOSSIERS-DISQUES_42404.aspx

De plus, de nombreuses fonctions et d'autres classes (objets) sont présentes.)

@+
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Nouvelle MAJ au gré de l'avancement de Hex Editor VB :

-affiche boite de dialogue Run (executer)
-affiche boite de dialogue Sauvegarder (renvoie le nom du fichier choisi et affecte automatiquement l'extension désirée sans doublons)
-affiche boite de dialogue Ouvrir (renvoie le path du fichier choisi)
-sauvegarde directe d'un fichier texte (ou binaire) à l'aide d'une string contenant les données à sauvegarder ==> il s'agit de spécifier un path, une booléenne d'overwrite et du texte à sauvegarder, c'est un gain de temps pour la sauvegarde des fichiers de texte par exemple (SaveStringInFile "c:\montext.txt",Text1.Text,True)

@+
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Merci pour le commentaire (que je vois après coup, dsl) !


Sinon, je viens dire que j'ai fait une MAJ :

-correction de quelques bugs

ajout des fonctions qui manquaient, à savoir :

-supprimer un dossier
-envoyer à la corbeille fichier/dossier
-déplacer fichier/dossier
(le tout avec les boites de dialogue Windows, donc faites confiance à ma classe, elle ne risque pas de vous faire perdre un fichier !)

et ajout de deux autres fonctions :

-affiche boite de dialogue "Propriétés" pour un fichier/dossier/drive
-affiche boite de dialogue "Choix d'un répertoire"



Petit commentaite : FolderExists marche aussi pour les Drives. Donc la fonction DriveExists de FileSystemObject est remplacée par FolderExists dans ma source.

Voilà ! Bientôt çà remplacera complètement FSO ;)
Si vous avez des idées de fonctions à rajouter, dites le !
Merci, @+
SamsonTam
Messages postés
3
Date d'inscription
samedi 30 décembre 2006
Statut
Membre
Dernière intervention
31 décembre 2006
-
Salut,

ce projet est fantastique, il donne une foule d'exemples clairs et commentés sur la manipulation de fichiers.
Ce dernier m'apparraît plus comme un tutorial que comme un simple projet. (Lecture, renommage, recherche, listing de fichier et dossiers. En plus des classes et des apis.)


Personnelemment, je ne savais rien sur les dlls et j'ai compris le fonctionnement seulement en lisant le code source!
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Salut, et çà marche ?

Autrement, pour info, j'ai mis à jour.... j'avais pas vu que l'on ne devais pas passer
GENERIC_READ
GENERIC_WRITE
FILE_SHARE_READ
FILE_SHARE_WRITE
en même temps pour avoir un accès le plus complet possible au fichier/dossier.


Donc maintenant, c'est possible d'obtenir des infos sur les fichiers système également.

@+

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.