Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.22;
Скачать: CL | DM;

Вниз

Номер иконки в 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 вся ветка

Текущий архив: 2002.08.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
3-70956
NoSerge
2002-08-01 23:21
2002.08.22
транзакция read_committed не видит изменений


6-71280
newbie1
2002-06-11 14:35
2002.08.22
немогу получить сообщение от сервера


3-70974
Alexsys
2002-07-29 20:36
2002.08.22
Возвращаясь к поиску по нескольким полям сразу...


14-71314
Фикус
2002-07-26 11:50
2002.08.22
Супер-пупер новые форточки!


14-71327
AL2002
2002-07-26 13:19
2002.08.22
Кто играл в детстве на Аtаri 8-бит