Hai, so da ist sie.
Private Const MAX_PATH As Long = 260
Private Const FILE_SHARE_WRITE As Long = &H2
Private Const FILE_SHARE_READ As Long = &H1
Private Const FILE_SHARE_DELETE As Long = &H4
Private Const INVALID_HANDLE_VALUE As Long = (-1)
Private Const GENERIC_READ As Long = &H80000000
Private Const GENERIC_WRITE As Long = &H40000000
Private Const CREATE_ALWAYS As Long = 2
Private Const OPEN_EXISTING As Long = 3
Private Const CREATE_NEW As Long = 1
Private Const OPEN_ALWAYS As Long = 4
Private Const FILE_BEGIN As Long = 0
Private Const FILE_CURRENT As Long = 1
Private Const FILE_END As Long = 2
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Type LargeSeekPointer
Lolong As Long
HiLong As Long
End Type
Private Declare Function GetFileSize Lib "kernel32.dll" ( _
ByVal hFile As Long, _
ByRef lpFileSizeHigh As Long) As Long
Private Declare Function ReadFile Lib "kernel32.dll" ( _
ByVal hFile As Long, _
ByVal lpBuffer As String, _
ByVal nNumberOfBytesToRead As Long, _
ByRef lpNumberOfBytesRead As Long, _
ByVal lpOverlapped As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32.dll" ( _
ByVal hFile As Long, _
ByVal lDistanceToMove As Long, _
ByRef lpDistanceToMoveHigh As Long, _
ByVal dwMoveMethod As Long) As Long
Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" ( _
ByVal hObject As Long) As Long
Private hFile As Long
Private tmpShare As Long
Private tmpGeneric As Long
Private tmpFileName As String * MAX_PATH
Private tmpCreate As CreateFlags
Private mySeekPtr As LargeSeekPointer
Public Enum CreateFlags
OpenExist = OPEN_EXISTING
CreateNew = CREATE_NEW
Overwrite = CREATE_ALWAYS
OpenEver = OPEN_ALWAYS
End Enum
Public Event FileClose(hFile As Long)
Public Event FileOpen(hFile As Long)
Public Event BevoreFileSeek(hFile As Long, Lolong As Long, HiLong As Long)
Public Event AfterFileSeek(hFile As Long, Lolong As Long, HiLong As Long)
Public Property Get OpenMode() As Long
OpenMode = tmpCreate
End Property
Public Property Get MaxPathLen() As Long
MaxPathLen = MAX_PATH
End Property
Public Property Get FileHandle() As Long
FileHandle = hFile
End Property
Public Property Get AccessMode() As Long
AccessMode = tmpGeneric
End Property
Public Property Let AccessMode(ByVal nGeneric As Long)
tmpGeneric = nGeneric
End Property
Public Property Get ShareMode() As Long
ShareMode = tmpShare
End Property
Public Property Let ShareMode(ByVal nShareM As Long)
tmpShare = nShareM
End Property
Private Sub Class_Initialize()
hFile = INVALID_HANDLE_VALUE
tmpShare = FILE_SHARE_READ
tmpGeneric = GENERIC_READ
tmpCreate = OPEN_ALWAYS
End Sub
Public Property Get IsShareRead() As Boolean
If hFile = 0 Then Exit Property
IsShareRead = CBool(tmpShare And FILE_SHARE_READ)
End Property
Public Property Get IsShareWrite() As Boolean
If hFile = 0 Then Exit Property
IsShareWrite = CBool(tmpShare And FILE_SHARE_WRITE)
End Property
Public Property Get IsShareDelete() As Boolean
If hFile = 0 Then Exit Property
IsShareDelete = CBool(tmpShare And FILE_SHARE_DELETE)
End Property |