![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите плиз достать иконку!!!!!! [D5, Win95/98]
ted © (2002-04-11 10:51:00)Может быть кто-нибудь знает как достать иконку из .exe файла????
Song (2002-04-17 18:14:00) [1]2Толик © (17.04.02 12:36)
Ok, попробуйте выдрать икону для любого ico или bmp файла. Ну как, сама икона файла или икона типа? :)
Толик (2002-04-17 12:36:00) [2]to Song ©:
>>"ExtractAssociatedIcon() ...выдерают ассоциированную икону именно с данным файлом, а не с типом этого файла т.е. ту икону, которая в нём заложена, а не та, которая предназначена в реестре для идентификации его по изображению..." - ничего подобного!!! Для любого файла, с расширением, например, .dll ф-я ExtractAssociatedIcon() вернёт одну и ту же иконку! Собственно, это даже следует из её названия :) Да и проблема-то не в том, как ДОСТАТЬ иконку, а как её СДЕЛАТЬ 16x16.
Song (2002-04-16 13:12:00) [3]Толик © (16.04.02 11:35)
ExtractAssociatedIcon() как и ExtractIconEx()
выдерают ассоциированную икону именно с данным файлом, а не с типомэтого файла т.е. ту икону, которая в нём заложена, а не та, которая предназначена в реестре для идентификации его по изображению.
А если Вы хотите иконку, которая соспоставлена для типа данного файла, тут одназначно нужен реестр или SHFile*, но данная функция работает с буфером иконок, который может и не всегда содержать нужной иконки.
Толик (2002-04-16 11:35:00) [4]to Song ©:
>>А чего Вы взялись за этот ExtractAssociatedIcon()
Приходится... Удобно для зарегистрированных расширений, например .dll .hlp и проч. Можно крнечно по реестру полазать и узнать какая иконка берётся из Explorer.exe для dll"ек и взять её оттуда, но мне кажется что это криво. Через ExtractAssociatedIcon надёжнее...
Song (2002-04-16 11:22:00) [5]2Толик © (16.04.02 11:15)
А чего Вы взялись за этот ExtractAssociatedIcon()
Что Вам мешает дёргать их через ExtractIconEx()? Там также.
А если рисовать с масштабированием, действительно получается кривовато, артефакт сжатия всегда присутствует, особенно когда маленький размер сжимаемого изображения.
Толик (2002-04-16 11:15:00) [6]to Song ©:
Ну так я о том и говорю, что ExtractIconEx() умеет это делать, а ExtractAssociatedIcon() - нет. У меня есть список файлов, для каждого из них я рисую свою иконку, взятую через ExtractAssociatedIcon(). А рисую я их в выпадающем списке, поэтому 32x32 туда не влезает. Вот я и хочу сделать 16x16. Через DrawIconEx это конечно получается, но рисуются они кривовато (по крайней мере не так, как взятые через ExtractIconEx). Вот я и хочу узнать, как из 32x32 сделать 16x16, чтобы они рисовались красиво???
Song (2002-04-16 11:06:00) [7]2Толик © (16.04.02 10:59)
ExtractIconEx() может возвращать как и большие так и маленькие.
Толик (2002-04-16 10:59:00) [8]Народ, а кто-нибудь знает, как из иконки 32x32 сделать 16x16??? Например ф-я ExtractIconEx умеет возвращать иконки 16x16.
Если рисовать через DrawIconEx это получается как-то кривовато.
copyr25 (2002-04-15 23:19:00) [9]unit Unit1;
// How to extact an icon from exe
// and paint it?
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
ShellAPI, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
IconIndex : word;
h : hIcon;
begin
IconIndex := 0;
h :=
ExtractAssociatedIcon(hInstance,
"C:\WINDOWS\NOTEPAD.EXE",
IconINdex);
DrawIcon(Form1.Canvas.Handle,
10,
10,
h);
end;
end.
Neolord (2002-04-14 04:22:00) [10]restorator 2.50 или irfanView 0.5 и выше
DenKop (2002-04-11 22:27:00) [11]uses ShellApi
var
Icon:TIcon;
...
begin
Icon.Handle:=ExtractIcon(hInstance,FileName,0);
...
end;
В Icon"е будет первая попавшаяся иконка файла.
Подробнее смотри в SDK.
gek (2002-04-11 11:20:00) [12]Есть в Delphi пример
Resxplor
Song (2002-04-11 11:09:00) [13]ExtractAssociatedIcon()