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

Вниз

Иконка зарегистрированного Виндой файла   Найти похожие ветки 

 
DiHLoS   (2002-12-13 11:07) [0]

Получаю иконку 32х32, а нужно 16х16. Использую следующий код:


var
Ico: TIcon;
IconNum:Word;
...
Ico:=TIcon.Create;
Ico.Handle:=ExtractAssociatedIcon(Handle,
PChar("c:\windows\notepad.exe"){к примеру}, IconNum);
Canvas.Draw(Left, Top, Ico);
Ico.Free;


Что нужно изменить? Помогите, плиз.


 
DiHLoS   (2002-12-13 13:45) [1]

Сам задал вопрос, сам и ответил:)))
У меня получилось через BitMap :

procedure TForm1.Button1Click(Sender: TObject);
var
Ico : TIcon;
Bmp : TBitmap;
IconNum: Word;
begin
Ico := TIcon.Create;
Ico.Handle := ExtractAssociatedIcon(Handle,
PChar({путь к файлу}),IconNum);
Bmp := TBitmap.Create;
Bmp.Height := Ico.Height;
Bmp.Width := Ico.Width;
Bmp.Canvas.Draw(0, 0, Ico);
Form1.Canvas.StretchDraw(Rect(0,0,16,16),Bmp);
Bmp.Free;
Ico.Free;
end;


 
Игорь Шевченко   (2002-12-13 14:10) [2]

Вместо
Bmp := TBitmap.Create;
Bmp.Height := Ico.Height;
Bmp.Width := Ico.Width;
Bmp.Canvas.Draw(0, 0, Ico);

Можно
DrawIconEx(Form1.Canvas.Handle, 0, 0, Ico.Handle,
16,16, 0, 0, DI_NORMAL);


 
DiHLoS   (2002-12-13 17:25) [3]

Ну можно и так, конечно :))

А вообще была идея для любого файла показывать его иконку, но
ExtractAssociatedIcon дает иконку 32х32... я понимаю, ее можно уменьшить до 16х16, но в Винде же есть эти иконки!!! и они различаются (см. Проводник в режиме "список" и "крупные иконки")
Как доставать именно иконки 16х16 ?

Заранее спасибо!


 
Игорь Шевченко   (2002-12-13 17:47) [4]

DiHLoS © (13.12.02 17:25)

Проводник их так и рисует...Через DrawIconEx


 
DiHLoS   (2002-12-13 19:54) [5]

Ну не спорю, что он так рисует...

Как нарисовать, это другой вопрос в принципе.:-)
Как получить эту иконку 16х16 (оригинальную, а не уменьшая 32х32).
Попробуйте извлечь иконки, например, из WinWord.exe - их там немеряно: и 32х32 и 16х16...

Как получить желаемое?:-(


 
Song   (2002-12-13 20:25) [6]

Проводник рисует через DrawIconEx(), но иконку для рисования получает не с помощью ExtractAssociatedIcon(), а через ShGetFileInfo(). Также эту иконку можно получить вручную, через реестр.


 
Kirill45   (2002-12-14 04:02) [7]

Ну а попробуй так :

Ico := ExtractIconEx(PChar(имя твоего файла),-1,IcoL,IcoS,X);
// Ico - сколько иконок в файле

for X := 0 to Ico do
begin
My_Icon.Handle := ExtractIcon(hInstance, PChar(имя твоего файла),X);
ImageList1.AddIcon(My_Icon);
// ну а по Handle показываешь где тебе надо
end;
посмотри описание ExtractIconEx там можно выбрать 32/16


 
Song   (2002-12-14 11:03) [8]

2Kirill45 (14.12.02 04:02)
ExtractIconEx() это будет не та иконка.



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

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

Наверх




Память: 0.45 MB
Время: 0.007 c
14-97016
Сатир
2003-01-13 16:49
2003.01.30
Пропала хорошая традиция...


7-97043
XED
2002-11-17 12:03
2003.01.30
Hook!!!


1-96680
Filat
2003-01-20 12:27
2003.01.30
ListView и ProgressBar, как совместить?


1-96841
Palladin
2003-01-21 06:03
2003.01.30
А мона ли... ?


4-97069
Matolch
2002-12-12 13:06
2003.01.30
Что значит the default directory в параметрах функции?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский