Как вытащить иконку из exe файла
Перейти к содержимому

Как вытащить иконку из exe файла

Как извлечь иконку из EXE-файла, не распаковывая его

Найти в интернете оригинальную иконку приложения обычно не составляет труда, но есть и исключения. Предположим, что вы работаете над каким-то проектом и вам понадобилось высококачественное ICO -изображение ярлыка приложения, которого, как назло, в сети не нашлось. Исполняемый файл программы — это, по сути, архив, который можно распаковать утилитой-экстрактором, но есть менее затратный и одновременно более удобный способ.

Скачайте и установите утилиту IconViewer. Это небольшое приложение не имеет собственного основного окна, но и консольным оно также не является. Вместо этого IconViewer интегрируется в окно свойств исполняемых exe -файлов, добавляя дополнительную вкладку «Icons»,

IconViewer

содержащую все необходимые опции для просмотра и извлечения иконок, а именно:

  • Список доступных размеров иконки с возможностью предпросмотра.
  • Копирование файла иконки в буфер обмена.
  • Скачивание файла иконки на жесткий диск.

Форматов сохранения предлагается три — ICO , PNG и BMP , то есть утилита может работать еще и как конвертер.

IconViewer

Рассчитывать на получение очень больших иконок не стоит, как правило, разработчики ограничиваются максимальным размером 256х256 px, а может оказаться и так, что в файле будет только одна иконка маленького размера, и тут уже ничего не поделать.

Как вытащить иконку из exe файла

выдернуть иконки из ЕХЕ файла

$ sudo aptitude install icoutils # Если делали отображене иконок по приведённому мануалу — уже установлено

$ man wrestool # Извлекает не только иконки, но и другие ресурсы из Win — бинарников

Простой пример «извлечения» иконки

$ wrestool -x -t14 -o /куда/класть/иконку /файл/с/иконкой.exe # 14 — ID типа иконок

Конвертировать иконку в png можно с помощью icotool из того же пакета

$ icotool -x -o /куда/класть/png /файл/с/иконкой.ico

  • убрать заголовок окна
  • Настройка notify-osd
  • Pidgin + X-Status
  • Ускорение загрузки системы
  • проблема с мышью wine
  • полноценное представление об аппаратной части компьютера
  • выдернуть иконки из ЕХЕ файла
  • Сохранение просмотренного он-лайн видео
  • Создаем свой дистрибутив на базе Ubuntu
  • Весь LinuxFormat одним ударом
  • Наиболее часто используемые команды в Linux
  • Очень полезные команды Linux
  • создание собственного репозитария на основе кеша apt
  • Добавление ключа
  • Руководство по работе с wget
  • способы сборки пакетов
  • Скрипты
  • Убираем меню и строку состояния Virtual Box
  • После просыпания не спрашивать пароль
  • Remastersys команды
  • восстановление флешки, форматирование флешки
  • установить короткий пароль
  • полное удаление панели Gnome Ubuntu 11.04
  • чтобы убрать всю тень в compiz
  • Вот это вылечит все виндовые крякозябры кодировки
  • Быстрая переустановка программ в Ubuntu
  • Просмотр ТВ каналов Ростелекома на Ubuntu
  • эскизы видео файлов
  • Добавить запуск стороннего приложения в Dash
  • Как временно изменить текст заголовка произвольного окна
  • долгая загрузка kde
  • dpkg не работает
  • пересобрать deb-пакет
  • Ускорение запуска всех приложений KDE
  • Устанавливаем VirtualBox 4.1
  • Включение ускорения в VLC
  • Как отключить всплывающие уведомления о системных ошибках в Ubuntu 12.04
  • Настройка ВКонтакте и Одноклассников в Pidgin
  • Отправка по ctrl + enter в pidgin
  • соединить два видеофайла в терминале
  • Редактирование локализации
  • скринкаст
  • как создать ISO
  • hdmi
  • Поиск файлов
  • Как настроить в Linux воспроизведение через интерфейс HDMI
  • samba
  • Linux воспроизведение через интерфейс HDMI
  • как DVD рипнуть Avidemux в AVI
  • Как сделать загрузочную флешку
  • Форматирование флешки
  • очистка
  • ArtMoney для Ubuntu или просто — взлом игр в Linux
  • pol
  • x сервер переключение раскладки
  • pidgin
  • Flash Player в opera

Как вытащить иконку из exe файла

function ExtractIconExA(lpszFile: PAnsiChar ;
nIconIndex: Integer ;
phiconLarge : PhIconArray;
phiconSmall: PhIconArray;
nIcons: UINT): UINT; stdcall ;
external ‘shell32.dll’ name ‘ExtractIconExA’ ;

function ExtractIconExW(lpszFile: PWideChar ;
nIconIndex: Integer ;
phiconLarge: PhIconArray;
phiconSmall: PhIconArray;
nIcons: UINT): UINT; stdcall ;
external ‘shell32.dll’ name ‘ExtractIconExW’ ;

function ExtractIconEx(lpszFile: PAnsiChar ;
nIconIndex: Integer ;
phiconLarge : PhIconArray;
phiconSmall: PhIconArray;
nIcons: UINT): UINT; stdcall ;
external ‘shell32.dll’ name ‘ExtractIconExA’ ;

procedure TForm1.Button1Click(Sender: TObject );
var
NumIcons : integer ;
pTheLargeIcons : phIconArray;
pTheSmallIcons : phIconArray;
LargeIconWidth : integer ;
SmallIconWidth : integer ;
SmallIconHeight : integer ;
i : integer ;
TheIcon : TIcon;
TheBitmap : TBitmap;
begin
NumIcons :=
ExtractIconEx( ‘C:\Program Files\Borland\Delphi 3\BIN\delphi32.exe’ ,
— 1 ,
nil ,
nil ,
0 );
if NumIcons > 0 then begin
LargeIconWidth := GetSystemMetrics( SM_CXICON );
SmallIconWidth := GetSystemMetrics( SM_CXSMICON );
SmallIconHeight := GetSystemMetrics( SM_CYSMICON );
GetMem (pTheLargeIcons, NumIcons * sizeof (hIcon));
GetMem (pTheSmallIcons, NumIcons * sizeof (hIcon));
FillChar (pTheLargeIcons^, NumIcons * sizeof (hIcon), #0 );
FillChar (pTheSmallIcons^, NumIcons * sizeof (hIcon), #0 );
ExtractIconEx( ‘C:\Program Files\Borland\Delphi 3\BIN\delphi32.exe’ ,
0 ,
pTheLargeIcons,
pTheSmallIcons,
numIcons);
{$IFOPT R+}
{$DEFINE CKRANGE}
{$R-}
{$ENDIF}
for i := 0 to (NumIcons — 1 ) do begin
DrawIcon(Form1.Canvas.Handle,
i * LargeIconWidth,
0 ,
pTheLargeIcons^[i]);
TheIcon := TIcon. Create;
TheBitmap := TBitmap.Create;
TheIcon.Handle := pTheSmallIcons^[i];
TheBitmap.Width := TheIcon.Width;
TheBitmap.Height := TheIcon.Height;
TheBitmap.Canvas.Draw( 0 , 0 , TheIcon);
TheIcon.Free;
Form1.Canvas.StretchDraw( Rect (i * SmallIconWidth,
100 ,
(i + 1 ) * SmallIconWidth,
100 + SmallIconHeight),
TheBitmap);
TheBitmap.Free;
end ;
{$IFDEF CKRANGE}
{$UNDEF CKRANGE}
{$R+}
{$ENDIF}
FreeMem (pTheLargeIcons, NumIcons * sizeof (hIcon));
FreeMem (pTheSmallIcons, NumIcons * sizeof (hIcon));
end ;
end ;

DestroyIcon(FileInfo.hIcon);
// Save the Icon to a file:
icon.SaveToFile( ‘IconFromExe.ico’ );
// Set the Icon as Application Icon (temporary)
Application.Icon := icon;

Процесс получения иконок из .EXE, .DLL или .ICO файлов полностью идентичен. Различие только в том, что в .ICO файле может храниться только одна иконка, а в .EXE и .DLL несколько. Для получения иконок из файлов, в модуле ShellAPI, есть функция:

delphi
function ExtractIcon(Inst: THandle ; FileName: PChar ; IconIndex: Word ): HIcon;

Inst
указатель на приложение вызвавшее функцию,
FileName
имя файла из которого необходимо получить иконку,
IconIndex
номер необходимой иконки.
Если функция возвращает значение не равное нулю, то в файле есть следующая иконка.

В данном примере в компонент Image1 выводится иконка запущенного файла.

delphi
uses ShellAPI;
.
procedure TForm1.FormCreate(Sender: TObject );
var
A: array [ 0 .. 78 ] of Char ;
begin

StrPCopy (A, ParamStr ( 0 ));

Image1.Picture.Icon.Handle := ExtractIcon(HInstance, A, 0 );
end ;

Если вы хотите создать некий браузер по иконкам, то можете воспользоваться компонентами с закладки Win3.1. Вынесите на форму компонент TFileListBox; затем TDirectoryListBox, в свойстве FileList укажите на список файлов [TFileListBox]; после этого возьмите компонент класса TDriveComboBox, указав в его свойстве DirList на список каталогов [TDirectoryListBox], ну, и, наконец, ставьте TFilterComboBox, который позволит в списке файлов отображать только те файлы, которые соответствуют маске, указанной в свойстве Filter. Здесь в качестве значения укажите следующее: ico|*.ico|dll|*.dll|exe|*.exe|all|*.ico; *.dll; *.exe ..а в свойстве FileList задайте список файлов [TFileListBox]. В обработчике OnClick компонента TFileListBox напишите такой код:

delphi
var
A: array [ 0 .. 78 ] of Char ;
begin

StrPCopy (A, FileListBox1.FileName);

Image1.Picture.Icon.Handle := ExtractIcon(HInstance, A, 0 );

@Drkb::02346
http://delphiworld.narod.ru/
DelphiWorld 6.0 Количество статей: 4366

Вход
Мини-чат 🙂
Статистика
СегодняВсего
Посетителей6103712814
Запросов4023391508337
Online
Пользователей0
Гостей66

Как извлечь значки (иконки) из файла

Как извлечь значки (иконки) из файла

В операционных системах Windows, некоторые виды файлы могут содержать в себе значки (или как их иначе называют — иконки, от английского icons), которые используются как для придания исполняемому файлу своего неповторимого облика, так и для использования внутри программ. Хранятся такие значки в формате ico, и их можно без проблем извлечь для изучения или использования в своих целях. В этом нелегком деле нам могут помочь две бесплатных утилиты — IconsExtract от NirSoft или Resource Hacker от Angus Johnson.

IconsExtract

IconsExtract — очень простая в использовании программа. Скачать её можно с официального сайта, в виде исполняемого exe файла, не требующего установки, или в составе файла установщика. Программа очень проста в использовании — достаточно запустить её, и выбрать файл или папку для поиска иконок (с помощью кнопок «Browse Folders. » и «Browse Files. » соответственно). Так же есть возможность поиска иконок в файле процесса — для этого, нужно выбрать пункт «Scan icons in the selected process». Выбрав желаемый способ поиска иконок, нажимаем на кнопку «Search For Icons«. После этого, в программе загрузятся все доступные иконки. Для сохранения иконки, необходимо выделить нужные, после чего нажать правой кнопкой мыши и выбрать пункт «Save Selected Icons».

Resource Hacker

Взять данную программу можно с официального сайта автора. После установки и запуска, выбираем меню «File«, а в нем пункт «Open«, и открываем интересующий нас exe, dll или иной файл. После открытия, загрузится дерево ресурсов, в нем нас должны интересовать два раздела «Icon» и «Icon Group». Первый раздел содержит в себе каждую иконку по отдельности, в то время как второй содержит те же иконки, но поделенные на группы под разное разрешение. Выбрав (выделив левой кнопкой мыши) нужную иконку или группу иконок, нажимаем правой кнопкой мыши и в появившемся меню выбираем «Save *.ico resource. «. После этого, выбираем любое удобное место, куда будет сохранен ico файл с иконкой (иконками).

Была ли эта статья Вам полезна?

Что в статье не так? Пожалуйста, помогите нам её улучшить!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *