Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];

Вниз

Номер иконки в Dll или Exe файле больше их количества   Найти похожие ветки 

 
Nickolay   (2002-06-06 18:28) [0]

Здравствуйте,
помогите разобраться пожалуйста.
Вопрос относительно иконок в Dll и Exe файлах. К примеру кнопки Internet Exlorer ссылаются на иконки в Dll или Exe файле вот так:
C:\PROGRAM FILES\SIBER SYSTEMS\AI ROBOFORM\ROBOFORM.DLL,201
Это якобы должно означать, что нужна иконка под № 201. Но дело в том, что в этом файле их только 20 (проверено разными способами и програмами). Как узнать какая нужна иконка? Это точно не первая иконка файла. Я пользовался
ExtractAssociatedIcon(РInstance, PChar(Name), IconIndex) и
ExtractIcon(РInstance, PChar(Name), IconIndex) результат одинаков.


 
Suntechnic   (2002-06-06 19:56) [1]

№ 201 это не номер иконки, а её идентификатор, а кто сказал, что они должны быть по порядку?
Хочешь извлечь иконку с идентификатором № 201? Тогда делай LoadLibrary и дальше LoadIcon c идентификатором.


 
Song   (2002-06-06 20:40) [2]

TIcon.LoadResourceName()


 
Nickolay   (2002-06-07 12:58) [3]

Song

а что это за функция? У TIcon такой нет. Какой Delphi?


 
Song   (2002-06-07 13:38) [4]

Sorry, TIcon.LoadFromResourceName()


 
Nickolay   (2002-06-07 14:59) [5]

Народ, а можно пример? Что то я не совсем понял.


 
Suntechnic   (2002-06-07 20:27) [6]

>Song © (07.06.02 13:38)
Что то ты тут напутал. У TIcon нет такой ф-ции. У TBitmap есть. Правда может в 6 версии добавили, так что спорить не буду, да и вопрос вроде в конференции по Win API...

>Nickolay (07.06.02 14:59)
Ну что здесь не понятного. Иконки обычно хранятся в ресурсах. Ресурсы могут быть как у exe так и у dll. А иногда dll просто используется как хранилище ресурсов и ничего более. Так вот, если иконка находится не у тебя в exe, а где-то в dll то тебе необходимо загрузить эту dll с помошью LoadLibrary. А затем используя API ф-цию LoadIcon загрузить иконку из данной dll. Особое внимание обрати на первый параметр ф-ции LoadIcon. Туда должен передаваться handle твоей загруженной dll, который ты получишь после LoadLibrary.


 
Song   (2002-06-07 23:12) [7]

2Suntechnic © (07.06.02 20:27) Delphi 6:

Loads an icon resource into the icon object.

procedure LoadFromResourceName(Instance: Cardinal; const ResName: string);

Description

LoadFromResourceName loads the specified icon resource from a module"s executable file.

Instance is the handle of the module that contains the resource.

ResName is the name of the resource to load.


 
Nickolay   (2002-06-10 11:09) [8]

2 Suntechnic
Всем огромное спасибо за помощь, теперь я понял и все заработало.


 
Nickolay   (2002-06-12 10:37) [9]

Возникла еще одна проблема.
Не вытаскиваются иконки из ЕХЕ файлов под Win98/ME.
LoadLibrary срабатывает, а вот LoadIcon возвращает 0. Кто нибудь знает в чем тут дело?
вот код:
procedure TForm1.Button2Click(Sender: TObject);
var
Name : String;
Ico : HIcon;
IconIndex : word;
AModule : THandle;
begin
Name := Edit3.Text;
IconIndex := StrToInt(Edit4.Text);
AModule := LoadLibraryEx(PChar(Name),0,LOAD_LIBRARY_AS_DATAFILE);
Edit1.Text := IntToStr(AModule);
Ico := LoadIcon(AModule,PChar(IconIndex));
Edit2.Text := IntToStr(Ico);
DrawIcon(Form1.Canvas.Handle,10,10,Ico);
FreeLibrary(AModule);
end;


 
Song   (2002-06-12 11:16) [10]

А ExtractAssociatedIcon() не подойдёт? Там и мороки меньше..


 
Nickolay   (2002-06-12 11:40) [11]

ExtractAssociatedIcon() не ту иконку возвращает. Эта ф-ция возвращает иконки по их порядковому номеру, т.е. не то что мне надо. Получается та же проблема что я в вопросе писал.


 
Song   (2002-06-12 12:20) [12]

Ok, тогда ExtractIcon() - эта будет ту возвращать.


 
Nickolay   (2002-06-12 14:12) [13]

2 Song
Спасибо, вроде работает если индекс иконки указывать отрицательным.


 
Nickolay   (2002-06-18 10:39) [14]

И снова проблема. На Win2000 работает несколько методов, все они возвращают то что надо, но под 98 и Милениум из DLL не вытаскивает, что примечательно из ЕХЕ вытаскивает правильно.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.011 c
1-71262
SinnerPro
2002-08-12 10:01
2002.08.22
Помогите с Реестром


1-71102
Uran
2002-08-12 14:25
2002.08.22
Защита от копирования дисков


1-71122
zzet
2002-08-12 21:23
2002.08.22
Игнорировать нажатие


4-71415
Arick
2002-06-17 16:31
2002.08.22
Меню с иконками


1-71163
Sedunov Vitaly
2002-08-13 16:05
2002.08.22
InstallShield+MSSQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский