Описание функции
_WinAPI_SHGetSetFolderCustomSettings
Меняет иконку папки
_WinAPI_SHGetSetFolderCustomSettings(SHFCS, *Path$, flag)
Параметры
SHFCS | Структура SHFOLDERCUSTOMSETTINGS |
*Path$ |
Указатель на путь папки |
*flag |
Флаг определяющий доступ чтения/записи, например #FCS_READ, #FCS_FORCEWRITE, #FCS_WRITE |
Возвращаемое значение
Успех: | Возвращает 0 |
Ошибка: | Возвращает не 0 |
Пример
EnableExplicit
#Library = 0
Global SHFCS2
Prototype.i ProtoSHFCS(*SHFCS, *Path, Flags.i = 2)
If OpenLibrary(#Library, "Shell32.dll")
SHFCS2.ProtoSHFCS = GetFunction(#Library, "SHGetSetFolderCustomSettings")
EndIf
; Проверка указателя на функцию.
If Not SHFCS2
End
EndIf
Structure SHFOLDERCUSTOMSETTINGS
dwSize.l
dwMask.l
*pvid
*pszWebViewTemplate
cchWebViewTemplate.l
*pszWebViewTemplateVersion
*pszInfoTip
cchInfoTip.l
*pclsid
dwFlags.l
*pszIconFile
cchIconFile.l
iIconIndex.l
*pszLogo
cchLogo.l
EndStructure
#FCS_READ = 1
#FCS_FORCEWRITE = 2
#FCSM_ICONFILE = $10
Global SHFCS.SHFOLDERCUSTOMSETTINGS
Global Path$
Global IcoPath$ = "C:\Windows\System32\Shell32.dll"
Procedure Seticon()
Protected idxIcon, PathMem$, PathDesktop$, flgINI
IcoPath$ = OpenFileRequester("Открыть файл ресурсов", IcoPath$, "exe, dll, ico|*.exe;*.dll;*.ico;*.cpl;*.scr;*.ocx;*.ax", 0)
If Asc(IcoPath$)
PathMem$ = Space(260)
PokeS(@PathMem$, IcoPath$)
If PickIconDlg_(0, @PathMem$, 260, @idxIcon)
With SHFCS
\dwSize = SizeOf(SHFOLDERCUSTOMSETTINGS)
\dwMask = #FCSM_ICONFILE
\cchIconFile = 0
\iIconIndex = idxIcon
\pszIconFile = @PathMem$
EndWith
SHFCS2(SHFCS, @Path$, #FCS_FORCEWRITE)
EndIf
EndIf
EndProcedure
Path$ = ProgramParameter()
If Not FileSize(Path$) = -2 ; если папка, то
Path$ = PathRequester("Выберите папку", GetHomeDirectory())
If Not Asc(Path$)
End
EndIf
EndIf
Seticon()