home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / FileSystem206395542007.psc / File.cls < prev    next >
Text File  |  2007-04-27  |  14KB  |  363 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "File"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. ' =======================================================
  15. '
  16. ' Hex Editor VB
  17. ' Coded by violent_ken (Alain Descotes)
  18. '
  19. ' =======================================================
  20. '
  21. ' A complete hexadecimal editor for Windows ⌐
  22. ' (Editeur hexadΘcimal complet pour Windows ⌐)
  23. '
  24. ' Copyright ⌐ 2006-2007 by Alain Descotes.
  25. '
  26. ' This file is part of Hex Editor VB.
  27. '
  28. ' Hex Editor VB is free software; you can redistribute it and/or modify
  29. ' it under the terms of the GNU General Public License as published by
  30. ' the Free Software Foundation; either version 2 of the License, or
  31. ' (at your option) any later version.
  32. '
  33. ' Hex Editor VB is distributed in the hope that it will be useful,
  34. ' but WITHOUT ANY WARRANTY; without even the implied warranty of
  35. ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  36. ' GNU General Public License for more details.
  37. '
  38. ' You should have received a copy of the GNU General Public License
  39. ' along with Hex Editor VB; if not, write to the Free Software
  40. ' Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  41. '
  42. ' =======================================================
  43.  
  44.  
  45. Option Explicit
  46.  
  47. Private clsFile As FileSystem
  48. Private MyFile As ClassFile
  49.  
  50. '=======================================================
  51. 'Constantes
  52. '=======================================================
  53. Private Const GENERIC_READ                  As Long = &H80000000
  54. Private Const FILE_SHARE_READ               As Long = &H1
  55. Private Const FILE_SHARE_WRITE              As Long = &H2
  56. Private Const OPEN_EXISTING                 As Long = 3
  57. Private Const INVALID_HANDLE_VALUE          As Long = -1
  58. '=======================================================
  59. 'APIs
  60. '=======================================================
  61. 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
  62. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  63.  
  64.  
  65.  
  66. '=======================================================
  67. 'Type privΘ contenant les infos sur ce fichier
  68. '=======================================================
  69. Private Type ClassFile
  70.     Drive As Drive
  71.     Path As String
  72.     Attributes As FileAttributes
  73.     FileExtension As String
  74.     Folder As Folder
  75.     FileType As String
  76.     AssociatedExecutableProgram As String
  77.     FileSize As Currency
  78.     FileCompressedSize As Currency
  79.     DateCreated As String
  80.     DateLastModified As String
  81.     DateLastAccessed As String
  82.     IsHidden As Boolean
  83.     IsReadOnly As Boolean
  84.     IsSystem As Boolean
  85.     IsNormal As Boolean
  86.     IsArchive As Boolean
  87.     IsCompressed As Boolean
  88.     ShortName As String
  89.     ShortPath As String
  90.     FileVersionInfos As FileVersionInfos
  91.     FolderName As String
  92.     DriveName As String
  93. End Type
  94.  
  95. '=======================================================
  96. 'DΘfinit le path de cet objet
  97. '=======================================================
  98. Friend Function SetPath(Path As String, Optional ByVal RefreshInformations As Boolean = True)
  99.     'on dΘfinit le path du fichier
  100.     MyFile.Path = Path
  101.     If RefreshInformations Then Call RefreshInfos
  102. End Function
  103.  
  104. '=======================================================
  105. '//PropriΘtΘs de l'objet
  106. '=======================================================
  107. Public Property Get Drive() As Drive
  108.     Set Drive = clsFile.GetDrive(Left$(Me.Path, 1))
  109. End Property
  110. Public Property Get Path() As String: Path = MyFile.Path: End Property
  111. Attribute Path.VB_UserMemId = 0
  112. Public Property Get Attributes() As FileAttributes: Attributes = MyFile.Attributes: End Property
  113. Public Property Get FileExtension() As String: FileExtension = MyFile.FileExtension: End Property
  114. Public Property Get Folder() As Folder
  115.     Set Folder = clsFile.GetFolder(clsFile.GetFolderName(Me.Path))
  116. End Property
  117. Public Property Get FileType() As String: FileType = MyFile.FileType: End Property
  118. Public Property Get AssociatedExecutableProgram() As String: AssociatedExecutableProgram = MyFile.AssociatedExecutableProgram: End Property
  119. Public Property Get FileSize() As Currency: FileSize = MyFile.FileSize: End Property
  120. Public Property Get FileCompressedSize() As Currency: FileCompressedSize = MyFile.FileCompressedSize: End Property
  121. Public Property Get DateCreated() As String: DateCreated = MyFile.DateCreated: End Property
  122. Public Property Get DateLastModified() As String: DateLastModified = MyFile.DateLastModified: End Property
  123. Public Property Get DateLastAccessed() As String: DateLastAccessed = MyFile.DateLastAccessed: End Property
  124. Public Property Get IsHidden() As Boolean: IsHidden = MyFile.IsHidden: End Property
  125. Public Property Get IsReadOnly() As Boolean: IsReadOnly = MyFile.IsReadOnly: End Property
  126. Public Property Get IsSystem() As Boolean: IsSystem = MyFile.IsSystem: End Property
  127. Public Property Get IsNormal() As Boolean: IsNormal = MyFile.IsNormal: End Property
  128. Public Property Get ShortName() As String: ShortName = MyFile.ShortName: End Property
  129. Public Property Get ShortPath() As String: ShortPath = MyFile.ShortPath: End Property
  130. Public Property Get FileVersionInfos() As FileVersionInfos: FileVersionInfos = MyFile.FileVersionInfos: End Property
  131. Public Property Get IsCompressed() As Boolean: IsCompressed = MyFile.IsCompressed: End Property
  132. Public Property Get IsArchive() As Boolean: IsArchive = MyFile.IsArchive: End Property
  133. Public Property Get FolderName() As String: FolderName = MyFile.FolderName: End Property
  134. Public Property Get DriveName() As String: DriveName = MyFile.DriveName: End Property
  135.  
  136.  
  137.  
  138. '=======================================================
  139. '//MΘthodes
  140. '=======================================================
  141.  
  142. '=======================================================
  143. 'Rafraichit les infos
  144. '=======================================================
  145. Public Sub RefreshInfos()
  146. Dim tDates As FileDates
  147. Dim tSizes As FileSizes
  148. Dim hFile As Long
  149.  
  150.     'obtient le handle du fichier
  151.     hFile = CreateFile(Me.Path, GENERIC_READ, FILE_SHARE_WRITE Or FILE_SHARE_READ, _
  152.         ByVal 0&, OPEN_EXISTING, ByVal 0&, ByVal 0&)
  153.     
  154.     If hFile = INVALID_HANDLE_VALUE Then Exit Sub
  155.     
  156.     'rΘcupΦre les infos sur les 3 types size, dates et exeinfos
  157.     With clsFile
  158.         tDates = .GetFileDates_HANDLE(hFile)
  159.         tSizes = .GetFileSizes_HANDLE(hFile, Me.Path)
  160.     End With
  161.     
  162.     'stocke tout dans la variable temporaire
  163.     With MyFile
  164.         .Attributes = clsFile.GetFileAttributes_HANDLE(hFile)
  165.         .FileExtension = clsFile.GetFileExtension(Me.Path)
  166.         .FileType = clsFile.GetFileType(Me.Path)
  167.         .AssociatedExecutableProgram = clsFile.GetAssociatedProgram(Me.Path)
  168.         .FileSize = tSizes.FileSize
  169.         .FileCompressedSize = tSizes.CompressedFileSize
  170.         .DateCreated = tDates.DateCreated
  171.         .DateLastModified = tDates.DateLastModified
  172.         .DateLastAccessed = tDates.DateLastAccessed
  173.         .IsHidden = (.Attributes And Hidden) = Hidden
  174.         .IsReadOnly = (.Attributes And ReadOnly) = ReadOnly
  175.         .IsSystem = (.Attributes And System) = System
  176.         .IsCompressed = (.Attributes And Compressed) = Compressed
  177.         .IsArchive = (.Attributes And Archive) = Archive
  178.         .IsNormal = Not (.IsHidden Or .IsReadOnly Or .IsSystem)
  179.         .ShortName = clsFile.GetShortName(Me.Path)
  180.         .ShortPath = clsFile.GetShortPath(Me.Path)
  181.         .FileVersionInfos = clsFile.GetFileVersionInfos(Me.Path)
  182.         .FolderName = clsFile.GetFolderName(Me.Path)
  183.         If Len(Me.Path) >= 3 Then .DriveName = Left$(Me.Path, 3)
  184.     End With
  185.     
  186.     'referme le handle
  187.     Call CloseHandle(hFile)
  188.     
  189. End Sub
  190.  
  191. '=======================================================
  192. 'Copie le fichier
  193. '=======================================================
  194. Public Function Copy(ByVal Destination As String) As Long
  195.     Copy = clsFile.CopyFile(Me.Path, Destination)
  196. End Function
  197.  
  198. '=======================================================
  199. 'Supprime le fichier
  200. '=======================================================
  201. Public Function Delete() As Long
  202.     Delete = clsFile.DeleteFile(Me.Path)
  203. End Function
  204.  
  205. '=======================================================
  206. 'DΘplace le fichier
  207. '=======================================================
  208. Public Function Move(ByVal Destination As String) As Long
  209.     
  210.     If clsFile.MoveFile(Me.Path, Destination) Then
  211.         'on refresh les infos
  212.         Move = Me.SetPath(Destination, True)
  213.     End If
  214.     
  215. End Function
  216.  
  217. '=======================================================
  218. 'Affiche la boite de dialogue propriΘtΘs
  219. '=======================================================
  220. Public Function ShowPropertyBox(ByVal hWnd As Long) As Long
  221.     ShowPropertyBox = clsFile.ShowFileProperty(Me.Path, hWnd)
  222. End Function
  223.  
  224. '=======================================================
  225. 'DΘplace vers la corbeille
  226. '=======================================================
  227. Public Function MoveToTrash() As Long
  228.     MoveToTrash = clsFile.MoveToTrash(Me.Path)
  229. End Function
  230.  
  231. '=======================================================
  232. 'Renomme
  233. '=======================================================
  234. Public Function Rename(ByVal NewName As String) As Long
  235.  
  236.     If clsFile.FileExists(NewName) Then
  237.         Rename = -1
  238.         Exit Function
  239.     End If
  240.         
  241.     If clsFile.Rename(Me.Path, NewName) Then
  242.         'on refresh
  243.         Call Me.SetPath(NewName, True)
  244.     End If
  245.     
  246. End Function
  247.  
  248. '=======================================================
  249. 'Renvoie true si le fichier existe
  250. '=======================================================
  251. Public Function DoesFileExist() As Boolean
  252.     DoesFileExist = clsFile.FileExists(Me.Path)
  253. End Function
  254.  
  255. '=======================================================
  256. 'Renvoie true si le fichier est accessible
  257. '=======================================================
  258. Public Function IsFileAvailable() As Boolean
  259.     IsFileAvailable = clsFile.IsFileAvailable(Me.Path)
  260. End Function
  261.  
  262. '=======================================================
  263. 'Change les attributs du fichier
  264. '=======================================================
  265. Public Sub ChangeAttributes(ByVal NewAttributes As FileAttributes)
  266.     
  267.     If clsFile.ChangeFileAttributes(Me.Path, NewAttributes) Then
  268.         'refresh les attributs
  269.         With MyFile
  270.         .IsHidden = (.Attributes And Hidden) = Hidden
  271.         .IsReadOnly = (.Attributes And ReadOnly) = ReadOnly
  272.         .IsSystem = (.Attributes And System) = System
  273.         .IsCompressed = (.Attributes And Compressed) = Compressed
  274.         .IsArchive = (.Attributes And Archive) = Archive
  275.         .IsNormal = Not (.IsHidden Or .IsReadOnly Or .IsSystem)
  276.         .Attributes = NewAttributes
  277.         End With
  278.     End If
  279.     
  280. End Sub
  281.  
  282. '=======================================================
  283. 'Lit des bytes dans le fichier
  284. '=======================================================
  285. Public Function ReadFileString(ByVal StartingOffset As Currency, _
  286.     ByVal Size As Long) As String
  287.  
  288.     ReadFileString = clsFile.ReadFileString(Me.Path, Size, StartingOffset)
  289. End Function
  290.  
  291. '=======================================================
  292. 'Ecrit des bytes dans le fichier
  293. '=======================================================
  294. Public Function WriteFileString(ByVal StartingOffset As Currency, _
  295.     ByVal StringToWrite As String)
  296.     
  297.     WriteFileString = clsFile.WriteFileString(Me.Path, StringToWrite, _
  298.         StartingOffset, False)
  299.     
  300. End Function
  301.  
  302. '=======================================================
  303. 'RΘcupΦre l'icone du fichier
  304. '=======================================================
  305. Public Function GetIcon(ByVal Size As IconSize) As IPictureDisp
  306.     Set GetIcon = clsFile.GetIcon(Me.Path, Size)
  307. End Function
  308.  
  309. '=======================================================
  310. 'Encrypte le fichier
  311. '=======================================================
  312. Public Function Crypt() As Long
  313.     Crypt = clsFile.EncryptFile(Me.Path)
  314. End Function
  315.  
  316. '=======================================================
  317. 'DΘcrypte le fichier
  318. '=======================================================
  319. Public Function Decrypt() As Long
  320.     Decrypt = clsFile.DecryptFile(Me.Path)
  321. End Function
  322.  
  323. '=======================================================
  324. 'Lance la sanitization... my god...
  325. '=======================================================
  326. Public Function Sanitize() As Long
  327.     Sanitize = clsFile.SanitizeFile(Me.Path)
  328. End Function
  329.  
  330. '=======================================================
  331. 'Affecte des dates au fichier
  332. '=======================================================
  333. Public Function SetDates(Optional ByVal DateCreated As _
  334.     String = vbNullString, Optional ByVal DateLastAccess As String = vbNullString, _
  335.     Optional ByVal DateLastModification As String = vbNullString) As Long
  336.     
  337.     SetDates = clsFile.SetFileDates(Me.Path, DateCreated, DateLastAccess, _
  338.         DateLastModification)
  339. End Function
  340.  
  341. '=======================================================
  342. 'Lance un dΘcoupage
  343. '=======================================================
  344. Public Function CutFile(DestinationFolder As String, Method As CutMethod) As Long
  345.     CutFile = clsFile.CutFileFriend(Me.Path, DestinationFolder, Method)
  346. End Function
  347.  
  348.  
  349.  
  350.  
  351. '=======================================================
  352. 'Subs de la classe
  353. '=======================================================
  354. Private Sub Class_Initialize()
  355.     'instancie la classe clsFile
  356.     Set clsFile = New FileSystem
  357. End Sub
  358.  
  359. Private Sub Class_Terminate()
  360.     'libΦre la classe clsFile
  361.     Set clsFile = Nothing
  362. End Sub
  363.