Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2008, 23:00   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
Вопрос Icon-ка формата

Прива всем!
Не научи те, как мне получить иконку (или указатель на неё), котая установлина на какой-то формат файла, скажем mp3
Altera вне форума Ответить с цитированием
Старый 08.04.2008, 23:17   #2
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

>> Получение иконки для зарегистрированного расширения по его имени

Функции в качестве параметра передаётся имя файла и в случае удачного выполнения
она (функция) возвращает handle'р иконки (HICON). В случае, если в реестре небыло
найдено расширения предложеного файла, функция возвращает 0.

Также при успешном выполнении необходимо освободить хендлер. Для этого используется
функция DestroyIcon(Handle:HICON).

Зависимости: модуль Registry, модуль ShellAPI, модуль SysUtils и стандартные
функции Pos, Delete, Copy, ExtractFileExt, ExtractIcon, StrToInt.

Автор: Poirot, poirot@rol.ru, Нижний Новгород
Copyright: Poirot (частично из Delphi 5. Руководство разработчика)
Дата: 16 июня 2002 г.
*********************************** ****************** }

function GetRegistryIconHandle(FileName: string): HICON;
var
R: TRegistry;
Alias, //псевдвним для расширения в реестре
IconPath: string; //путь для файла с иконкой
IconNum, //номер иконки в файле
QPos: Integer; //позиция запятой в записи реестра
begin
IconNum := 0;

R := TRegistry.Create;

try
R.RootKey := HKEY_CLASSES_ROOT;

//чтение псевданима
if R.OpenKey('\' + ExtractFileExt(FileName), True) then
Alias := R.ReadString('');
R.CloseKey;

//чтение записи об иконке
if R.OpenKey('\' + Alias + '\DefaultIcon', True) then
IconPath := R.ReadString('');
R.CloseKey;

//поиск запятой
QPos := Pos(',', IconPath);

//чтение номера иконки в файле если она имеется
if QPos <> 0 then
begin
IconNum := StrToInt(Copy(IconPath, QPos + 1, 4));
IconPath := Copy(IconPath, 1, QPos - 1)
end;

finally
R.Free;
end;

//передача хендлера иконки как рещультат выполнения
Result := ExtractIcon(hInstance, PChar(IconPath), IconNum);
end;

Пример использования:
GetRegistryIconHandle('c:\winnt\win .ini');
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Icon Desctop One.Love Общие вопросы Delphi 2 22.08.2008 14:32
Icon to Bitmap Altera Мультимедиа в Delphi 3 23.04.2008 15:15
Проблема с Icon Pedro Общие вопросы Delphi 3 18.02.2008 23:33
icon malevich Свободное общение 7 10.12.2007 11:24
конвертер из *.icon в *.bmp KORT Свободное общение 2 21.10.2007 22:32