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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2012, 21:58   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Извлечение иконки файла и ее подгрузка в Image

Добрый вечер!
Нашел код извлечения иконки файла из реестра:
Код:
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;

procedure TForm2.sButton1Click(Sender: TObject);
begin
 GetRegistryIconHandle('G:\1.html');
end;
Как теперь полученную иконку загрузить, например, в поток (типа MemoryStream) чтобы потом ее можно было пересохранить в файл?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.10.2012, 22:28   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не проверял, но должно прокатить
Код:
var Picture: TPicture;
    Stream: TFileStream;
...
  Picture:=TPicture.Create;
  Stream:=TFileStream.Create('d:\MyIcon.ico',fmCreate);
  Picture.Icon.Handle:=HIcon;
  Picture.Icon.SaveToStream(Stream);
  Picture.Free;
  Stream.Free;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгрузка файла частями Vikenty C# (си шарп) 5 17.09.2012 04:14
Реализация идеи. подгрузка из файла mirоtvorec C++ Builder 3 20.06.2012 11:04
Извлечение файла из *.res victorshkoda Общие вопросы Delphi 2 18.01.2012 20:37
Вывод иконки файла в image gufon Общие вопросы Delphi 1 06.04.2011 17:58
Извлечение иконки из dll JSM Общие вопросы Delphi 2 29.06.2007 21:32