Главная » Получение иконки из ICO, EXE, DLL
Процесс получения иконок из .EXE, .DLL или .gif файлов полностью идентичен. Различие только в том, что в .gif файле может храниться только одна иконка, а в .EXE и .DLL несколько. Для получения иконок из файлов, в модуле ShellAPI, есть функция: function ExtractIcon(Inst: THandle; FileName: PChar; IconIndex: Word): HIcon;где
Inst
указатель на приложение вызвавшее функцию,
FileName
имя файла из которого необходимо получить иконку,
IconIndex
номер необходимой иконки. Если функция возвращает значение не равное нулю, то в файле есть следующая иконка. В данном примере в компонент Image1 выводится иконка запущенного файла. uses ShellAPI;
...
procedure TForm1.FormCreate(Sender: TObject);
var
  A: array [0..78] of Char;
begin
  {Получение имени запущенного файла}
  StrPCopy(A, ParamStr(0));
  {Вывод на экран нулевой иконки из файла}
  Image1.Picture.gifn.Handle := ExtractIcon(HInstance, A, 0);
end;Если вы хотите создать некий браузер по иконкам, то можете воспользоваться компонентами с закладки Win3.1. Вынесите на форму компонент TFileListBox; затем TDirectoryListBox, в свойстве FileList укажите на список файлов [TFileListBox]; после этого возьмите компонент класса TDriveComboBox, указав в его свойстве DirList на список каталогов [TDirectoryListBox], ну, и, наконец, ставьте TFilterComboBox, который позволит в списке файлов отображать только те файлы, которые соответствуют маске, указанной в свойстве Filter. Здесь в качестве значения укажите следующее: ico|*.gif|dll|*.dll|exe|*.exe|all|*.gif; *.dll; *.exe ..а в свойстве FileList задайте список файлов [TFileListBox]. В обработчике OnClick компонента TFileListBox напишите такой код: var
  A: array [0..78] of Char;
begin
  {Получение имени файла, указанного в списке файлов}
  StrPCopy(A, FileListBox1.FileName);
  {Вывод на экран нулевой иконки из файла}
  Image1.Picture.gifn.Handle := ExtractIcon(HInstance, A, 0); Категория: Языки программирования | Просмотров: 245