![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в Image получить иконку связанную с любым файлом?
Cansas & Rush © (2002-04-19 23:30:00)Как в Image получить иконку связанную с любым файлом?
Набережных С. (2002-04-20 19:32:00) [1]
> Cansas & Rush (20.04.02 15:54)
ExtractAssociatedIcon извлекает иконку, которая рисуется рядом с именем файла - либо ассоциированную с типом, либо содержащуюся в указанном файле(для EXE, ICO и т.п.). Поиграй с этим кодом, может и вопросы отпадут:
n:word;
if OpenDialog1.Execute then
Image1.Picture.Icon.Handle:=ExtractAssociatedIcon(hInstance,PChar(OpenDialog1.FileName),n);
Song (2002-04-20 17:52:00) [2]ExtractFileExt() вернёт вам расширение файла
И далее по проверке.
Всё-таки я не соглашусь с Вашим утверждением, что ExtractAssociatedIcon() возвращает иконку, ассоциированную с типом, она как раз возвращает ассоциированную с файлом (т.е. та, которая в нём заложена), а вот икону, ассициированную с типом можно выдернуть только через реестп. Это две вещи не всегда одинаковые. И ещё: ExtractAssociatedIcon() возвращает только 32х32
Cansas & Rush (2002-04-20 17:42:00) [3]ExtractIcon может корректно стащить иконку только из Exe, Dll и Ico файлов!
А ExtractAssociatedIcon со всех, только проблема в том, что она вытаскивает стандартные иконки, иконки связанные с данным типом файлов!
Вопрос в том, как программно проверить из какого файла требуется вытащить иконку, и если это exe, dll или ico, тогда применить ExtractIcon, а если это другой, тогда в Image помещаем стандартную иконку с этого файла с помощью функции ExtractAssociatedIcon!
Заранее благодарен за ответ!
olookin (2002-04-20 16:58:00) [4]Мне всегда помогало следующее:
procedure TForm1.Button1Click(Sender: TObject);
var r: array [0..1000] of char;
begin
if opendialog1.execute then begin
strpcopy(r,opendialog1.filename);
im[n]:=TImage.Create(Form1); im[n].Parent:=ScrollBox1;
im[n].width:=32; im[n].height:=32;
im[n].left:=10+32*w+w*10; im[n].top:=10;
im[n].Picture.icon.handle:=ExtractIcon(Hinstance,r,0);
w:=w+1; n:=n+1; end;
end;
Song (2002-04-20 16:31:00) [5]С помощью ExtractAssociatedIcon можно всегда вытащить икону (если она конечно есть, если нет, то и ExractIcon не поможет). Другое дело, ту ли Вы икону вытащите, которую Вам нужно?
Cansas & Rush (2002-04-20 15:54:00) [6]А как проверить можно ли вытащить иконку из файла с помощью функции ExtractIcon, а если нельзя, то с помощью ExtractAssociatedIcon?
Заранее благодарен!
Song (2002-04-20 09:11:00) [7]Здесь нужно разделять: иконка связанная с файлом (хранящаяся в нём) или связанная с его типом (по реестру, через SHFileOperation)
~Sergius (2002-04-20 01:44:00) [8]ExtractAssociatedIcon
Cansas & Rush (2002-04-20 00:19:00) [9]А без VCL?
Stexen (2002-04-19 23:46:00) [10]Писал я компоненту котрая выводила картинки в зависимости от мастдаевского индекса который указываешь в теге... кароче если надо пиши на мыло скину щас искать неохота