Статьи по Делфи
Меню сайта


Категории каталога
Мои статьи [2]
Функции и процедуры Win Api [20]
Работа с мышью [10]
Реестр и Делфи [11]
Работа с файлами [38]
Делфи и Хакер [10]
Инсталлятор собственными руками [6]
Хитрости в делфи [3]
Работа с системой [19]


Форма входа


Поиск по каталогу


Друзья сайта


Наш опрос
Понравились ли вам треки
Всего ответов: 156


Приветствую Вас, Гость · RSS 2020-09-19, 9:40 PM
Начало » Статьи » Функции и процедуры Win Api

Как в Delphi изменить иконку у директории
Обычно, для изменения вида папок в Проводнике используется файл desktop.ini.

Сперва необходимо создать файл Desktop.ini и поместить в ту директорию, иконку которой мы хотим изменить. В программе для этого можно воспользоваться классом TIniFile и передать в него путь директории.

Теперь нам необходимо записать в .ini файл пары =. В Desktop.ini эти пары выглядят следующим образом (самое главное, это указать иконку и её индекс):

[.ShellCLassInfo]
IconFile=C:LocationofFolder.ico
IconIndex=0
InfoTip=Delphi is the coolest IDE ever!

Значение IconFile это путь к .dll, .ico, или .exe. В Delphi это выглядит так:

with iniFile do
begin
//Следующие строки меняют иконку
WriteString(′.ShellClassInfo′, ′IconFile′, editIconPath.Text);
WriteString(′.ShellClassInfo′, ′IconIndex′, editIconIndex.Text);
WriteString(′.ShellClassInfo′, ′InfoTip′, ′Use Delphi because it rocks!′);
UpdateFile;
end;

Теперь, когда файл 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;

Теперь можно открыть Проводник и посмотреть в левой панели на значёк директории.

Категория: Функции и процедуры Win Api | Добавил: Admin (2006-12-16) | Автор: M@ster
Просмотров: 1298 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *: