|
Tip formerly from VB2TheMax
Expertise: Intermediate
Language: VB5,VB6
June 9, 2001
SetFolderIcon - Associate an icon to a folder
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
Marco Bellinaso
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.
|