使用 GetFileAttributes 及 SetFileAttributes 二个 API 我们就可以读取及设定这四个属性。
'请在声明区中加入以下声明:
'设定文件属性
Private Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long
'读取文件属性
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Const FILE_ATTRIBUTE_READONLY = &H1 '设定为只读
Const FILE_ATTRIBUTE_HIDDEN = &H2 '设定为隐藏
Const FILE_ATTRIBUTE_SYSTEM = &H4 '设定为系统
Const FILE_ATTRIBUTE_ARCHIVE = &H20 '设定为保存
Const FILE_ATTRIBUTE_NORMAL = &H80 '设定为一般 (取消前四种属性)
'要设定二种以上的属性可以用 or 串联以上之属性,来看看例子:
'设定 db1.mdb 为只读
SetFileAttributes "c:\db1.mdb", FILE_ATTRIBUTE_READONLY
'设定 db1.mdb 为只读 + 隐藏
SetFileAttributes "c:\db1.mdb", FILE_ATTRIBUTE_READONLY Or FILE_ATTRIBUTE_HIDDEN
'设定 db1.mdb 为只读 + 隐藏 + 系统 + 保存
SetFileAttributes "c:\db1.mdb", FILE_ATTRIBUTE_READONLY Or FILE_ATTRIBUTE_HIDDEN _
Or FILE_ATTRIBUTE_SYSTEM Or FILE_ATTRIBUTE_ARCHIVE
'取消 db1.mdb 所有设定
SetFileAttributes "c:\db1.mdb", FILE_ATTRIBUTE_NORMAL
'要读取文件目前的属性,则是用 GetFileAttributes API,以读取 db1.mdb 为例:
MsgBox GetFileAttributes("c:\db1.mdb")
'返回值如上面的常数声明值,例如:
'若返回值为 6 ( =2+4 ) 表示此文件为 隐藏 + 系统
'但是若返回值为 128 表示此文件未设定任何属