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

Вниз

Доступ к иконкам зарегестрированным в оболочке 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.009 c
3-22582
Malder
2002-03-17 11:26
2002.04.08
IBguard.exe и IBserver.exe


3-22533
rvs
2002-03-14 16:22
2002.04.08
Delphi+MySql ---- начинающий


1-22694
IronHawk
2002-03-26 14:58
2002.04.08
Как сохранить текст из Едита в Файл без метки перевода каретки (конца строки)?


1-22696
andr
2002-03-26 14:52
2002.04.08
Как в Word вставить таблицу?


1-22705
ТеньЛуны
2002-03-26 15:59
2002.04.08
Библиотеки шифрования