Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?
Естественно, коль скоро я пишу сюда, хотелось бы решение именно на WinAPI (безо всякого MFC)...
Здравствуйте 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]: Как получить иконки, ассоциированные с файлом
Здравствуйте 1, вы писали:
1>Здравствуйте Simontsev Andrew, вы писали:
SA>>Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?
1>Надо работать через реестр — берешь расширение
Для картинок, мпегов, офисных документов можно через реестр.
Для проч. можно использовать Windows Shell, например
IShellFolder::GetUIObjectOf(,,,__uuidof(IExtractIcon),,)
Здравствуйте Simontsev Andrew, вы писали:
SA>Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?
SA>Естественно, коль скоро я пишу сюда, хотелось бы решение именно на WinAPI (безо всякого MFC)...
Ну если нужно на WinAPI, то посмотри описание ExtractAssociatedIcon()......
----
With best regards, Kot Burov aka W@ndERR ®
UIN: 108043419
--------
Re[2]: Как получить иконки, ассоциированные с файлом
Здравствуйте, 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]: Как получить иконки, ассоциированные с файлом
Здравствуйте, Simontsev Andrew, Вы писали:
SA>Такая вот проблема — как, например, виндовый проводник определяет, какую иконку показывать, когда выводит списки файлов? С исполняемыми файлами все понятно — там есть ExtractIcon, а откуда он берет иконки для картинок, мпегов, офисных документов и проч?
SA>Естественно, коль скоро я пишу сюда, хотелось бы решение именно на WinAPI (безо всякого MFC)...
вот посмотрите Re[3]: Извлечение иконки из исполняемого файла
то что мой старый код под 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]: Как получить иконки, ассоциированные с файлом
Здравствуйте, 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__>(Приведенный ниже код извлекает иконку, ассоциируемую шеллом с вордовыми документами)
СПАСИБО, то что надо !!!