Форум: "WinAPI";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];
ВнизДоступ к иконкам зарегестрированным в оболочке Windows Найти похожие ветки
← →
Nexus (2002-02-03 16:58) [0]Возник такой вопрос, как можно получить иконку какого либо типа файла(по расширению)???
← →
ZZ (2002-02-03 17:17) [1]Ты представляешь - у составителей FAQ этого сайта тоже возник такой вопрос :) (поискать было лень?)
http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988621978&n=15
← →
Slava (2002-02-04 09:47) [2]> ZZ
Уважаемый, а Вы пробовали воспользоваться этим советом,
вставив вместо "Application.ExeName" что-нибудь другое?
У меня Д6. Это не работает ни в W2K, ни в XP, ни в W"98
← →
drpass (2002-02-04 12:02) [3]ExtractAssociatedIcon, например
← →
Nexus (2002-02-04 19:31) [4]2ZZ: Нет, не представляю :) Такой метод подходит только если файл такого типа существует на локальном компьютере. А что если тип зарегистрирован, а файла такого типа на компьютере нет.
← →
Nexus (2002-02-05 14:15) [5]Ну знает кто-нибудь или нет?
← →
valery_f (2002-02-06 11:45) [6]Иконки задаются в реестре, и там есть 2 варианта:
1) К примеру - ".PAS":
HKEY_CLASSES_ROOT\.pas, значение по умолчанию - "DelphiUnit"
HKEY_CLASSES_ROOT\DelphiUnit\DefaultIcon - значение по умолчанию - "D:\Programs\Borland\Delphi5\Bin\Delphi32.exe,5"
т.е. обычная ссылка на иконку (либо отдельно лежащую, либо в EXE или DLL по индексу), как до нее добраться - надеюсь знаешь.
2) Бывает так, что раздела "DefaultIcon" нет - только ссылка на COM-объект, который занимается этим типом файла:
HKEY_CLASSES_ROOT\__Тип_документа__\CLSID
Хотя, чаще всего, присутствие CLSID не отменяет ссылки на иконку, но такое иногда случается. Вот что с этим делать - я не знаю...
Мораль - по типу файла находишь в реестре тип документа, затем по типу документа ищешь DefaultIcon, а там уже вытаскиваешь саму иконку. Если этого нет - тогда ой :)
← →
ctapik-net (2002-02-06 18:35) [7]Че человеку голову заморочили.
1. Кидаешь на форму ImageList в FormCreate пишешь следующее
ImageList.ShareImages:=True;
ImageList.DrawingStyle:=dsTransparent;
SHGetSpecialFolderLocation(Application.Handle, CSIDL_DRIVES, MyPidl);
ImageList.Handle:=SHGetFileInfo(Pchar(MyPidl), 0, FileInfo,
SizeOf(FileInfo),SHGFI_PIDL or
SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
2. Далее используешь функцию SHGetFileInfo Вместо имени файла посылаешь че нибудь такое "1.txt" Он тебе вернет индекс в системном имедж листе этой иконки. В твоем случае это будет в ImageList.
P.S. Незабудь после каждого вызова SHGetFileInfo вызывать функцию DestroyIcon(че-то там.hIcon) т.к. SHGetFileInfo дополгительно возвращает хендел на эту иконку.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c