Changing File Attribute
This is a simple VB6 application that can change file or folder attributes and teach you how to accept dropped files, and files from command line. The purpose of this article is for beginners to know how to create
WndProc function and translate the message
First you have to post a flag to your window that it is accept files, the easy way to use
DragAcceptFiles(hWnd,fAccept). Then your window proc will reserve a message
WM_DROPFILES that contains information about number of dropped files and the full path for every file.
Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long On Error Resume Next If uMsg = WM_DROPFILES Then On Error Resume Next Dim All_Number_Of_Drag_Files As Integer Dim Drag_File_Path As String Dim Drag_File_Size As String Dim Numbers As Long Dim Res As String All_Number_Of_Drag_Files = DragQueryFile(wParam, -1, vbNullString, 0) If All_Number_Of_Drag_Files = 1 Then Drag_File_Size = DragQueryFile(wParam, 0, vbNullString, 0) Drag_File_Path = Space$(255) DragQueryFile wParam, 0, Drag_File_Path, (Drag_File_Size + 1) Form1.Text1.Text = Drag_File_Path Else Form2.Show Form2.List1.Clear For Numbers = 0 To (All_Number_Of_Drag_Files - 1) Drag_File_Size = DragQueryFile(wParam, Numbers, vbNullString, 0) Drag_File_Path = Space$(255) DragQueryFile wParam, Numbers, Drag_File_Path, (Drag_File_Size + 1) If Do_File(True, Drag_File_Path) = True Then Res = "True : " Else: Res = "False: " Form2.List1.AddItem (Res & Drag_File_Path) Next End If End If WindowProc = CallWindowProc(PrevProc, hWnd, uMsg, wParam, lParam) End Function
Changing File Attributes
The file attributes is:
ReadOnly: This flag means that applications can’t edit or delete the file or folder.
Hidden: This flag means that the file is invisible to you and windows explorer will discard it.
Archive: This flag means that the file is archived in the hard disk.
SystemFile: This flag means that the file is a system file and it’s important.
I’ve used File System Object here to edit the file attributes, you can use API’s instead like this:
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20 Public Const FILE_ATTRIBUTE_HIDDEN = &H2 Public Const FILE_ATTRIBUTE_NORMAL = &H80 Public Const FILE_ATTRIBUTE_READONLY = &H1 Public Const FILE_ATTRIBUTE_SYSTEM = &H4 Public Const FILE_ATTRIBUTE_TEMPORARY = &H100 Public Const FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = &H2000 Public Const FILE_ATTRIBUTE_OFFLINE = &H1000 Public Declare Function SetFileAttributes Lib "kernel32" Alias _ "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long Public Function SetAttr(ByVal lpFile As String, ByVal Flags As Long) As Boolean SetAttr = SetFileAttributes(lpFile, Flags) End Function
You can learn more about file attributes by reading this.
Finally, I would like to thank you for reading my article.
- 22nd February, 2010: Initial post