用VB做一个文件管理器 如下图

用VB做一个文件管理器 如下图,第1张

已经做得差不多了呀,不过为了效率和广泛性,建议使用API来 *** 作文件,而不是洞桐猛FSO对象

建议增加打开文件、移动文件、重命名文件、查看文件属性的功能

*** 作文件需要的API及声明:

复制文件:

1.CopyFile 2.CopyFileEx 3.ReadFile->WriteFile 4.NtReadFile->NtWriteFile

Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Private Declare Auto Function CopyFileEx Lib "kernel32.dll" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As CopyProgressRoutine, ByVal lpData As IntPtr, ByRef pbCancel As Boolean, ByVal dwCopyFlags As CopyFileFlags) As Long

Private Declare Function ReadFile Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long

Private Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long

Private Declare Function NtReadFile Lib "NTDLL.DLL" (ByVal Handle 轮察As Long, ByVal Events As Long, ByVal ApcRoutine As Long, ByVal ApcContext As Long, ByVal IoStatus As Long, ByVal Buffer As Long, ByVal Length As Long, Optional ByVal Number As Long, Optional ByVal Keys As Long) As Long

Private Declare Function NtWriteFile Lib "NTDLL.DLL" (ByVal Handle As Long, ByVal Events As Long, ByVal ApcRoutine As Long, ByVal ApcContext As Long, ByVal IoStatus As Long, ByVal Buffer As Long, ByVal Length As Long, Optional ByVal Number As Long, Optional ByVal Keys As Long) As Long

删除文件:

1.CreateFile  2.NtCreateFile  3.NtSetInformationFile 4.NtDeleteFile

Private Declare Function CreateFile Lib "kernel32" Alias 纳桥"CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Private Declare Function NtCreateFile Lib "NTDLL.DLL" (ByRef FileHandle As Long, ByVal DesiredAccess As Long, ObjectAttributes As Any, IoStatusBlock As Any, Allocation As Long, ByVal FileAttributes As Long, ByVal ShareAccess As Long, ByVal CreateDisposition As Long, ByVal CreateOptions As Long, ByVal EaBuffer As Long, ByVal EaLength As Long) As Long

Private Declare Function NtSetInformationFile Lib "NTDLL.DLL" (ByVal FileHandle As Long, IoStatusBlock As IO_STATUS_BLOCK, FileInformation As Any, ByVal Length As Long, ByVal FileInformationClass As Long) As Long

Private Declare Function NtDeleteFile Lib "NTDLL.DLL" (ObjectAttributes As OBJECT_ATTRIBUTES) As Long

移动文件:

1.MoveFile 2.MoveFileEx  3.NtSetInformationFile

Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long

Private Declare Function MoveFileEx Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) As Long

重命名文件:

1.MoveFile  2.MoveFileEx 3.NtSetInformationFile

以上 *** 作都通用:

SHFileOperation

Private Declare Function SHFileOperation Lib "shell32.dll" Alias " SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

创建、打开文件(夹):

1.CreateFile  2.NtCreateFile  3.CreateDirectory  4.CreateDirectoryEx

Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long

Private Declare Function CreateDirectoryEx Lib "kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long

查看文件属性:

1.SHObjectProperties  2.ShellExecuteEx

Private Declare Function ShellExecuteEx Lib "shell32.dll" (ByRef s As SHELLEXECUTEINFO) As Long

Private Declare Function SHObjectProperties Lib "shell32" Alias "#178" (ByVal hwndOwner As Long, ByVal uFlags As Long, ByVal lpstrName As String, ByVal lpstrPar As String) As Long

1、这个程序必须始终运行,可以放到启动组

2、要用到timer控件,隔一段时间检测一次当前日期

3、发现当前日期是2011.10.8,余纳饥就去删除指定的文件夹

这种竖返茄丛事用计划任务来做更好!

用access建立一个数据库,名为files.mdb

库中建立一个表,名为filedata

表中三个字段:id(自动编号主键)、filename(文本型)、filedata(OLE对象)

'存文件:

Private Sub Command1_Click()

Dim cn As New ADODB.Connection, rs As New ADODB.Recordset

Dim fn As String, fns As String, b() As Byte

fn = "e:\tmp\示例文档.doc"

fns = Dir(fn)

If fns = "" Then Exit Sub

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0Data Source=files.mdb"

rs.Open "select * from filedata", cn, 1, 3

rs.AddNew

rs("filename") = fns

Open fn For Binary As #1

ReDim b(LOF(1))

Get #1, , b

rs("filedata"物知).AppendChunk b

Close #1

rs.Update

rs.Close

cn.Close

MsgBox fn &"文件已存入数拿樱据库!"

End Sub

'取文件

Private Sub Command2_Click()

Dim cn As New ADODB.Connection, rs As New ADODB.Recordset

Dim fn As String, fns As String, b() As Byte

cn.Open "罩敏消Provider=Microsoft.Jet.OLEDB.4.0Data Source=files.mdb"

rs.Open "select * from filedata", cn, 1, 3

fns = rs("filename")

fn = "e:\" &fns

If Dir(fn) <>"" Then Kill fn

b = rs("filedata").GetChunk(rs("filedata").ActualSize)

Open fn For Binary As #1

Put #1, , b

Close #1

rs.Close

cn.Close

MsgBox "已从数据库取出文件" &fn

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12401662.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存