|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.04.2008, 23:00 | #1 |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
Icon-ка формата
Прива всем!
Не научи те, как мне получить иконку (или указатель на неё), котая установлина на какой-то формат файла, скажем mp3 |
08.04.2008, 23:17 | #2 |
Участник клуба Подтвердите свой е-майл
Регистрация: 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.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |