В данной статье мы рассмотрим, как работать с иконками и файлом desktop.ini в среде разработки Delphi, а также обсудим некоторые нюансы, связанные с этим процессом. Файл desktop.ini используется для настройки внешнего вида папок в операционных системах Windows, включая установку иконок для папок и их содержимого.
Получение данных об иконке из папки
Для начала работы с иконками, полезно уметь получать информацию об иконке для конкретной папки. Вот пример функции, которая выполняет эту задачу:
function GetDesktopIniIconDataFromFolder(const APath: string; var AIconIndex: Integer): string;
var
Setting: TSHFolderCustomSettings;
begin
ZeroMemory(@Setting, SizeOf(Setting));
Setting.dwSize := SizeOf(Setting);
Setting.dwMask := FCSM_ICONFILE;
SetLength(Result, MAX_PATH + 1);
Setting.pszIconFile := PChar(Result);
Setting.cchIconFile := MAX_PATH;
if Succeeded(SHGetSetFolderCustomSettings(@Setting, PChar(APath), FCS_READ)) then
begin
Result := PChar(Result);
AIconIndex := Setting.iIconIndex;
end
else
Result := '';
end;
Эта функция автоматически развертывает переменные пути к иконке и поддерживает параметр IconResource файла desktop.ini.
Универсальная функция для получения пути к файлу иконки
Для более универсального подхода можно использовать следующую функцию, которая возвращает путь к файлу иконки для заданного объекта:
function GetObjectIconFileName(AParentWnd: HWND; const AName: UnicodeString; var AIndex: Integer): UnicodeString;
var
// ... (здесь идет описание переменных и реализация функции)
begin
// ... (здесь идет реализация логики функции)
end;
Эта функция использует интерфейсы COM для получения информации об иконке, что позволяет работать с различными типами объектов.
Использование отрицательных индексов для иконок
Если вы хотите использовать отрицательные индексы для иконок, важно передавать полный путь к файлу иконки в функцию SetIconLocation. Это связано с тем, что отрицательные индексы могут указывать на системные иконки, которые должны быть доступны без необходимости поиска в папке.
Заключение
Работа с иконками и файлом desktop.ini в Delphi может быть неочевидной из-за особенностей взаимодействия с системными функциями Windows. Однако, используя предоставленные примеры кода, вы сможете эффективно управлять внешним видом папок и их содержимого, настраивая иконки в соответствии с вашими требованиями.
Эта статья предназначена для специалистов, работающих с Delphi и Pascal, и предоставляет практический пример использования Object Pascal для работы с иконками и настройками папок в операционных системах семейства Windows.
В статье рассматривается работа с иконками и файлом `desktop.ini` в среде разработки Delphi, включая получение информации об иконках и настройку внешнего вида папок в операционных системах Windows.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS