Вопрос

У меня есть простой файловый браузер, и там я отображаю файлы и папки,

получено (для каталога)

SHFILEINFO info = new SHFILEINFO();
SHGetFileInfo(filename,
FILE_ATTRIBUTE_DIRECTORY,
ref info,Marshal.SizeOf(info),
SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON | SHGFI_ADDOVERLAYS);

Это работает на 100% нормально, но я заметил странность - если я пытаюсь получить значок для каталога, но указываю FILE_ATTRIBUTE_NORMAL вместо FILE_ATTRIBUTE_DIRECTORY но это делает странные вещи для каталогов - обычные папки имеют значки "белая бумага неизвестного типа файла", корзина имеет значок VLC и т.д.Каталоги под SVN имеют правильное наложение, но значок базового файла (белый лист бумаги).

Я понимаю, что базовым значком для каталога теперь будет значок неизвестного файла, но почему у некоторых папок совершенно странный значок?Config.У MSI есть значок установщика, у корзины есть значок VLC (wtf?!) и т.д.Что функция оболочки делает с этими параметрами?Какой именно значок он получает?

Опять же, это не проблема, мне просто любопытно.

Это было полезно?

Решение

Насколько я знаю, доступ к ресурсам значков осуществляется по их числовому индексу, поэтому я предполагаю, что извлекается правильный индекс, а затем значок извлекается либо из неправильной библиотеки, либо из правильной, но с использованием неправильного смещения + правильного индекса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top