![]() |
|
Модераторы: bsa |
![]()
|
|
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Мне надо извлечь из чужого exe-шника иконку и сохранить ее в формате PNG.
Как извлечь, я разобрался - функция ExtractIcon. А вот как сохранить в другом формате? Вроде слышал, что надо его сначала где-то отрисовать в нужном формате,а потом сохранить? Какие функции тут нужно заюзать? Ещё может понадобится изменять размер иконки. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
Средствами WinAPI по идее никак. Кроме как с bmp не работает. Есть 2 варианта - использование сторонней библиотеки (например libpng) либо GDI+
|
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Если знаете, опишите как это сделать при помощи GDI+
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
||||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
я гуглил. Но че-то нашлись только примеры как загрузить PNG в ресурсы. А как ICO преобразовать в PNG не находил.
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
А я нашел: http://www.vbdotnetheaven.com/UploadFile/t...ingGDIplus.aspx Тут написано, как создать PNG файл. Думаю, у тебя не возникнет проблем заменой myBitmap на myIcon с соответствующими вызовами. |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
как сохранить я наконец-то разобрался. В GDI+ Это оказыается оч просто
Но теперь проблема в другом. Иконка это как правило - набор иконок разного размера. Оказывается ExtractIcon извлекает только одну иконку того размера, которая соответствует принятому в системе размеру по-умолчанию. В WinXp это 32*32. В Висте не знаю. Но дело в том, что мне нужно извлечь иконку 48*48 если такая есть. И желательно с максимальной разрядностью цвета. Как получить HICON этой иконки? Нашёл примеры с функциями LookupIconIdFromDirectoryEx, CreateIconFromResourceEx... но там такие нереальные дебри... -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Попробовал :
но при флагах SHGFI_LARGEICON и SHGFI_LINKOVERLAY | SHGFI_OVERLAYINDEX все равно возвращается HICON иконки размером 32*32. как заюзать SHGetImageList вообще не понял. SHGetFileInfo может вернуть какой-то указатель на все иконки программы? -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Код рабочий 100%. Сам писал. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| ksili |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
а-а-а вот оно как...
Но я уже сделал наверно самым длинным путем - через
Этот код вроде даже если нет иконки 48*48 смасштабирует к ней ближайшую. Но все равно спасибо. ЗЫ. А что такое IID_IImageList? Это же не константа?
Что за интерфейс, как его создать? -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
||||||
|
|||||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
как раз константа. это UID определенный где-то в COM-е. Его создавать не надо, он уже есть, только надо подключить нужный файлик и все будет. Поищите в PlatformSDK.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |