Как получить иконки, ассоциированные с файлом
От: Simontsev Andrew Россия  
Дата: 18.07.01 00:49
Оценка:
Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?

Естественно, коль скоро я пишу сюда, хотелось бы решение именно на WinAPI (безо всякого MFC)...
Sincerely yours,
Andrew Simontsev.
Re: Как получить иконки, ассоциированные с файлом
От: 1  
Дата: 18.07.01 06:15
Оценка:
Здравствуйте Simontsev Andrew, вы писали:

SA>Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?


SA>Естественно, коль скоро я пишу сюда, хотелось бы решение именно на WinAPI (безо всякого MFC)...


Надо работать через реестр — берешь расширение
1) .acw в HKEY_CLASSES_ROOT ищешь ключ с таким именем, у него по умолчанию строка — acwfile
2) ищешь в HKEY_LLOCAL_MACHINE\SOFTWARE\Classes\acwfile\DefaultIcon —
%SystemRoot%\system32\accwiz.exe,0 — место файла и номер ресурса иконки
3) считываешь иконку и отрисовываешь LoadIcon(...
Легальные Анонимы это аккаунт через который можно писать тем кто не может зарегистрироваться как обычно, т.е. таким как я и ты. Для того чтобы отправить сообщение от Легального Анонима набери LOGIN : 1 Passw : 1
Re[2]: Как получить иконки, ассоциированные с файлом
От: MORBiD Россия  
Дата: 18.07.01 06:33
Оценка:
Здравствуйте 1, вы писали:

1>Здравствуйте Simontsev Andrew, вы писали:


SA>>Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?


1>Надо работать через реестр — берешь расширение


Для картинок, мпегов, офисных документов можно через реестр.
Для проч. можно использовать Windows Shell, например
IShellFolder::GetUIObjectOf(,,,__uuidof(IExtractIcon),,)
Re: Как получить иконки, ассоциированные с файлом
От: Constantin Burov Украина  
Дата: 20.07.01 08:28
Оценка:
Здравствуйте Simontsev Andrew, вы писали:

SA>Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?


SA>Естественно, коль скоро я пишу сюда, хотелось бы решение именно на WinAPI (безо всякого MFC)...


Ну если нужно на WinAPI, то посмотри описание ExtractAssociatedIcon()......
----
With best regards, Kot Burov aka W@ndERR ®
UIN: 108043419
--------
Re[2]: Как получить иконки, ассоциированные с файлом
От: artymen Россия  
Дата: 23.01.06 12:55
Оценка:
Здравствуйте, 1, Вы писали:

1>Здравствуйте Simontsev Andrew, вы писали:


SA>>Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?


SA>>Естественно, коль скоро я пишу сюда, хотелось бы решение именно на WinAPI (безо всякого MFC)...


1>Надо работать через реестр — берешь расширение

1>1) .acw в HKEY_CLASSES_ROOT ищешь ключ с таким именем, у него по умолчанию строка — acwfile
1>2) ищешь в HKEY_LLOCAL_MACHINE\SOFTWARE\Classes\acwfile\DefaultIcon —
1>%SystemRoot%\system32\accwiz.exe,0 — место файла и номер ресурса иконки
1>3) считываешь иконку и отрисовываешь LoadIcon(...
Большое спасибо, наконец-то я нашел то, что нужно, (только вот расширение может быть произволным. Всегда ли ключ в реестре равен <расширение файла>+'file' ?). Другие невнимательно читают вопрос и предлагают ExtractIcon(), даже не подозревая, что файл физически не существует. Говорят же: определить по расширению !!!
Re[3]: Как получить иконки, ассоциированные с файлом
От: artymen Россия  
Дата: 23.01.06 12:59
Оценка:
ой, тьфу, не обратил внимание на 1-ый пункт, сам не внимательный
Re[2]: Как получить иконки, ассоциированные с файлом
От: Alexander__S  
Дата: 23.01.06 14:00
Оценка: 1 (1)
1>Надо работать через реестр

Ну a если так:

SHFILEINFO sfi;
ZeroMemory(&sfi, sizeof(SHFILEINFO));
SHGetFileInfo("*.doc", 0, &sfi, sizeof(SHFILEINFO),
SHGFI_ICON|SHGFI_USEFILEATTRIBUTES);
m_hWordDocIcon = sfi.hIcon;
?

(Приведенный ниже код извлекает иконку, ассоциируемую шеллом с вордовыми документами)
Re: Как получить иконки, ассоциированные с файлом
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 23.01.06 15:54
Оценка:
Здравствуйте, Simontsev Andrew, Вы писали:

SA>Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?


SA>Естественно, коль скоро я пишу сюда, хотелось бы решение именно на WinAPI (безо всякого MFC)...

вот посмотрите Re[3]: Извлечение иконки из исполняемого файла
Автор: Valerio
Дата: 05.09.04

то что мой старый код под MFC — непринципиально. главное там — использование SHGetFileInfo, работает не только для исполняемых файлов но и берет просто иконку, ассоциированную с файлом, например по его расширению в случае неисполняемого файла, если правильно помню.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[3]: Как получить иконки, ассоциированные с файлом
От: artymen Россия  
Дата: 23.01.06 17:32
Оценка:
Здравствуйте, Alexander__S, Вы писали:

1>>Надо работать через реестр


A__>Ну a если так:


A__> SHFILEINFO sfi;

A__> ZeroMemory(&sfi, sizeof(SHFILEINFO));
A__> SHGetFileInfo("*.doc", 0, &sfi, sizeof(SHFILEINFO),
A__> SHGFI_ICON|SHGFI_USEFILEATTRIBUTES);
A__> m_hWordDocIcon = sfi.hIcon;
A__>?

A__>(Приведенный ниже код извлекает иконку, ассоциируемую шеллом с вордовыми документами)

СПАСИБО, то что надо !!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.