![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Иконки зарегистрированных типов [D6, 2000]
Neo Trinitron © (2006-01-30 16:34:00)Стоит задача получить иконки зарегистрированных типов файлов. Эта тема была, но её удалили, так что в поиск не отправляйте пожалуйста - я оттуда.
kami (2006-01-31 21:31:00) [1]ну и эти объявления я не стал искать (хотя, есть и в OLE2) :
function CoInitialize(lpReserved:Pointer):HResult;stdcall; external 'ole32.dll';
procedure CoUninitialize;stdcall;external 'ole32.dll';
kami (2006-01-31 21:26:00) [2]Neo Trinitron © (31.01.06 11:10) [8]
SHGetFileInfo объявлена в ShellAPI
Johnmen (2006-01-31 11:10:00) [3]Можно в инете найти готовый компонент TSysImageList, с исходниками.
Разобраться в нём несложно. Или использовать не разбираясь глубоко...:)
Neo Trinitron (2006-01-31 11:10:00) [4]Дико извиняюсь, а какой модуль юзать?
Neo Trinitron (2006-01-31 10:59:00) [5]Огромное спасибо откликнувшимся. Только пришёл на работу, буду разбираться.
kami (2006-01-30 22:54:00) [6]kami © (30.01.06 22:52) [4]
большое спасибо (:
Дико извиняюсь :), должно быть "большое спасибо :"
kami (2006-01-30 22:52:00) [7]Не помню, кто мне подсказал (ветка не сохранилась), но еще раз ему большое спасибо (:
const
Flag = SHGFI_ADDOVERLAYS or
SHGFI_ICON or
SHGFI_LARGEICON or
SHGFI_SYSICONINDEX or
SHGFI_USEFILEATTRIBUTES or
SHGFI_TYPENAME;// убрать самому, если тип файла не нужен
var
fi: _SHFILEINFOA;
//======================================
CoInitialize(nil);
SystemImageList.ShareImages:=True;
SystemLargeImageList.Handle := SHGetFileInfo(
PChar(''),
0,
fi,
SizeOf(TSHFileInfo),
Flag);
// в нужном месте:
SHGetFileInfo(PChar(FileExtWithDot),
FILE_ATTRIBUTE_NORMAL, // если нужна иконка папки, добавить or FILE_ATTRIBUTE_DIRECTORY
fi,
SizeOf(TSHFileInfo),
Flag);
l.imageIndex := fi.iIcon; // l:TListItem
//Не забыть по окончании вызвать CoUninitialize
Gero (2006-01-30 22:27:00) [8]Открываешь
HKEY_CLASSES_ROOT\.расширение
Читаешь параметр по умолчанию.
Затем открываешь HKEY_CLASSES_ROOT\этот_парамерт\DefaultIcon
Читаешь уже этот параметр по умолчанию. Это и будет путь к иконке для нужного расширения. Естественно, любого раздела из перечисленных может не оказаться.
Neo Trinitron (2006-01-30 17:41:00) [9]Дело обстоит иначе: Есть имена файлов (не реальные файлы, только их имена и расширения). Необходимо отобразить каждое имя файла с иконкой соответствующего типа.
begin...end (2006-01-30 16:44:00) [10]ExtractAssociatedIcon ?