Главная страница
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.019 c
3-22607
xim
2002-03-17 15:47
2002.04.08
Помогите советом, сломалась таблица parodox.


1-22709
Optiquest 15"
2002-03-26 17:10
2002.04.08
Как программно открыть виндовый Paint, и в нем открыть файл c: picture.bmp?


1-22611
DimaP
2002-03-25 19:28
2002.04.08
Hint


3-22549
ZDN
2002-03-15 13:04
2002.04.08
IB 5.5 на NT 4.0 SP6 переход на 5.6


14-22816
QueenOfRain
2002-02-26 10:51
2002.04.08
Трепаться, так и об этом тоже....