Как получить расположение значка папки оболочки для конкретной папки?

В Delphi XE7 мне нужно получить расположение значка, используемого проводником Windows для отображения папки, особенно в виде эскизов. Поэтому я использую этот код:

var
  Shell32DllFilePath: string;

// Get shell32.dll FilePath:
Shell32DllFilePath := IncludeTrailingPathDelimiter(JclSysInfo.GetWindowsSystemFolder) + 'shell32.dll';
if not FileExists(Shell32DllFilePath) then
begin
    Shell32DllFilePath := '';
    // Todo: log this error
end;

Тогда я предполагаю, что значок папки по умолчанию является значок с IconIndex 3 в shell32.dll:

Тем не менее, это дает мне статическое изображение для каждой папки, в то время как проводник Windows использует различные значки папок в зависимости от расположения папки и / или содержимого папки.

Итак, как я могу получить точное местоположение значка папки (файл значка DLL и индекс значка), который использует проводник Windows для любой папки SPECIFIC?

1 ответ

Решение

Может не быть пути к файлу с пиктограммой, как работает Windows. Вы упоминаете "особенно в виде эскизов", что означает, что изображения и значки (внутри папки) объединены в иконку папки. Это не сохраняет файл в любом месте, поэтому вы не можете загрузить из любого файла.

Я предполагаю, что это тип значка, о котором вы говорите:

Другие вопросы по тегам