Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
3-22547
ZDN
2002-03-15 09:59
2002.04.08
Помогите чайнику немытому связать два датасета, пожалуйста!


14-22833
Sks
2002-02-28 09:45
2002.04.08
Win API


14-22843
PEC
2002-02-25 12:47
2002.04.08
Delphix !


1-22648
Сатир
2002-03-26 19:12
2002.04.08
Динамическое подключение пакетов


3-22608
{bas}
2002-03-18 18:31
2002.04.08
RX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский