Главная страница
    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.009 c
3-96587
Roma111
2003-01-10 14:56
2003.01.30
Преобразовать Int в Varchar


1-96724
MikeFW
2003-01-22 09:46
2003.01.30
Помогите, пожалуйста, с вопросами архивирования данных.


1-96659
softmaster
2003-01-21 14:49
2003.01.30
Путь запуска приложения


1-96650
Ван
2003-01-20 17:29
2003.01.30
Информация о пользователях домена Windows


1-96784
VinRaider
2003-01-16 23:37
2003.01.30
Изменение цвета Label или StaticText





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