Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вытащить иконку из exe 
:(
    Опции темы
ip127001
Дата 22.9.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 24.11.2006
Где: Omsk

Репутация: нет
Всего: -1



как? Помогите советом...
если можно то пример кода если есть..если нет то функцию...
--------------------
aqua currit et debere currere ut currere solebat
PM MAIL   Вверх
zkv
Дата 22.9.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 12
Всего: 92



Цитата(MSDN)

Extracting Icons from Executable Files
An application can use the ExtractIcon function to retrieve the handle to an icon from a specified executable file, dynamic-link library (DLL), or icon file. The following example uses the DragQueryPoint function to retrieve the coordinates of the point where a file was dropped, the DragQueryFile function to retrieve the file name of a dropped file, and the ExtractIcon function to retrieve the handle to the first icon in the file, if any. 

Hide Example

POINT pt; 
WORD cFiles; 
HDC hdc; 
char lpszFile[80]; 
HANDLE hCurrentInst, hicon; 

DragQueryPoint((HANDLE) wParam, &pt); 

cFiles = DragQueryFile((HANDLE) wParam, 0xFFFF, NULL, NULL); 

if(cFiles > 1) 

    TextOut(hdc, pt.x, pt.y, "Please drop only one icon file.", 31); 
    return FALSE; 

else 

    DragQueryFile((HANDLE) wParam, 0, lpszFile, 
                  sizeof(lpszFile)/sizeof(TCHAR)); 
    hCurrentInst = (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE); 
    hicon = ExtractIcon(hCurrentInst, lpszFile, 0); 
    if (hicon == NULL) 
        TextOut(hdc, pt.x, pt.y, "No icons found.", 15); 
    else if (hicon == (HICON) 1) 
        TextOut(hdc, pt.x, pt.y, "File must be .EXE, .ICO, or .DLL.", 33); 
    else 
        DrawIcon(hdc, pt.x, pt.y, hicon); 


DragFinish((HANDLE) wParam);



Добавлено через 52 секунды
пойдет?
PM MAIL   Вверх
ip127001
Дата 22.9.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 24.11.2006
Где: Omsk

Репутация: нет
Всего: -1



а можно пояснить плз..что и как работает..а то что не очень понятно...
--------------------
aqua currit et debere currere ut currere solebat
PM MAIL   Вверх
zkv
Дата 22.9.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 12
Всего: 92



все действие в этой строке происходит:
Код

   hicon = ExtractIcon(hCurrentInst, lpszFile, 0); 

передаешь инстанс, имя файла, индекс иконки (она там не одна может быть) и получаешь иконку на выходе. 
Вот и весь секрет smile
ExtractIcon
не забудь удалить только потом, когда не нужна иконка будет.
PM MAIL   Вверх
ip127001
Дата 22.9.2007, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 24.11.2006
Где: Omsk

Репутация: нет
Всего: -1



как я понял мы получаем указатель на эту иконку...а как ее преобразовать в изображение ..на пр. в bmp
--------------------
aqua currit et debere currere ut currere solebat
PM MAIL   Вверх
zkv
Дата 22.9.2007, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 12
Всего: 92



ip127001, посмотри статью  не уверен, что точно по теме, посмотришь. 
И пользуйся МСДНом и поиском, удачи!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.