Private Declare Function SetFileAttributes Lib "kernel32" Alias _
"SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As _
Long) As Long
' Associate an icon to a folder, by creating a desktop.ini file into it.
' Within Explorer the specified icon will be displayed instead of the standard
' folder icon
' Parameters:
' sFolderPath: path of the folder to associate the icon to
' sIconFile: icon file to associate. This can be a .ico, .exe or .dll file
' iIconIndex: index of the icon in case the specified file contains more than
' one icon (such as shell32.dll)
'
' Example:
' SetFolderIcon "C:\NiceFolder", "C:\Documents\TestIcon.ico"
Sub SetFolderIcon(ByVal sFolderPath As String, ByVal sIconFile As String, _
Optional ByVal iIconIndex As Long = 0)
Dim sContent As String
Dim sDesktopFile As String
Dim bExists As Boolean
Dim handle As Integer
On Error Resume Next
' test whether both the folder and the icon file exist
bExists = (GetAttr(sFolderPath) And vbDirectory) <> 0 And (GetAttr _
(sIconFile) And vbDirectory) = 0
If bExists = False Or Err.Number <> 0 Then Exit Sub
' build the file content
sContent = "[.ShellClassInfo]" & vbCrLf & "IconIndex=" & iIconIndex & _
vbCrLf & "IconFile=" & sIconFile
'make the path for the desktop.ini file
sDesktopFile = sFolderPath & IIf(Right$(sFolderPath, 1) = "\", "", _
"\") & "desktop.ini"
' open the file and write the content
handle = FreeFile
Open sDesktopFile For Output As #handle
Print #handle, sContent;
Close #handle
' make the file hidden and the folder read only
SetFileAttributes sDesktopFile, vbHidden
SetFileAttributes sFolderPath, vbReadOnly
End Sub
It's quick, easy and you get access to all the articles on DevX.
This registration/login is to allow you to read articles on devx.com. Already a member?
To become a member of DevX.com create your Member Profile by completing the form below. Membership is free!
If you have a hot tip and we publish it, we'll pay you. However, due to accounting overhead we no longer pay $10 for a single tip submission. You must accumulate 10 acceptable tips to receive payment. Be sure to include a clear explanation of what the technique does and why it's useful. If it includes code, limit it to 20 lines if possible. Submit your tip here.