Как изменить иконку у директории?
Обычно для изменения вида папок в Проводнике используется файл desktop.ini.
Сперва необходимо создать файл desktop.ini и поместить его в ту директорию, иконку которой мы хотим изменить. В программе для этого можно воспользоваться классом TIniFile и передать в него путь директории.
Теперь нам необходимо записать в .ini-файл пары значений. В desktop.ini эти пары выглядят следующим образом:
[.ShellCLassInfo]
IconFile=C:\folder.ico
IconIndex=0
InfoTip=Folder info tip
Самое главное - это указать иконку и её индекс.
Значение IconFile - это путь к .dll, .ico, или .exe файлу. В Delphi это выглядит так:
var iniFile: TIniFile;
…
iniFile:=TIniFile.Create(edFolderPath.Text);
with iniFile do
begin
//Следующие строки записывают в desktop.ini все необходимые параметры
WriteString(’.ShellClassInfo’, ‘IconFile’, editIconPath.Text);
WriteString(’.ShellClassInfo’, ‘IconIndex’, editIconIndex.Text);
WriteString(’.ShellClassInfo’, ‘InfoTip’,editInfoTip.Text);
UpdateFile;
end;
iniFile.Free;
Примечание: здесь editFolderPath, editIconPath, editIconIndex и editInfoTip - элементы TEdit, в которые вводятся все необходимые данные - путь к директории, иконку которой следует изменить, путь к файлу с иконкой, индекс иконки и всплывающая подсказка для директории (подсказка не обязательна).
Теперь, когда файл desktop.ini создан, необходимо изменить атрибуты папки и добавить системный флаг. Чтобы иконка отображалась правильно, желательно установить системный флажок как для папки, так и для её родителя. Для установки атрибутов воспользуемся функцией SetFileAttribue():
//Устанавливаем системные атрибуты для папки и её родителя
SetFileAttributes(PChar(edFolderPath.Text), FILE_ATTRIBUTE_SYSTEM);
if Length(edFolderPath.Text) > 3 then //Если директория не корневая…
begin
//функция LastChar возвращает индекс последнего вхождения символа
//в строку. Этот способ позволяет быстро получить путь родительской
//директориии, если, конечно, директория не является корневой на диске…
tempDir := Copy( edFolderPath.Text, 1,LastChar(edFolderPath.Text, ”)-1);
SetFileAttributes(PChar(tempDir), FILE_ATTRIBUTE_SYSTEM);
end;
Теперь можно открыть Проводник и посмотреть на значок.
Сентябрь
28,
2008
— Рубрика: Delphi
Метки: INI-файл, директория, иконка
