Получить значок Диска по типу mime

Я создаю приложение Windows C # Drive и хочу отображать миниатюры для нескольких папок.

Я знаю, что для файлов, существующих на диске, можно получить значок с помощью параметра IconLink.

Как я могу сделать этот файл, который еще не существует, используя MimeType файла?


person Tobiq    schedule 15.04.2017    source источник


Ответы (2)


Если у вас есть расширение файла, вы можете получить его из реестра, например:

HKEY_CLASSES_ROOT
    .avi

На моей машине значение (Default) для этого ключа равно VLC.avi.

Теперь найдите ключ с таким именем:

HKEY_CLASSES_ROOT
    VLC.avi

И там вы должны найти подраздел с именем DefaultIcon, который в моем случае имеет (Default) значение "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe",0.

Отсюда вы сможете получить значок по пути .exe.

Иногда DefaultIcon содержит путь к .dll, за которым следует индекс. Для этого вы можете проверить этот вопрос SO для получения подробной информации о том, как извлечь само изображение.

person Bassie    schedule 15.04.2017

Вы можете попробовать загрузить миниатюры. Как обсуждалось,

Для ярлыков и других типов файлов, которые Диск не может отображать, вы можете предоставить уменьшенное изображение, созданное вашим приложением. Загрузите миниатюру, задав свойство contentHints.thumbnail для файлового ресурса во время вставки или обновить вызов следующим образом:

  • Установите contentHints.thumbnail.image на безопасное для URL-адреса изображение в кодировке Base64.
  • Установите contentHints.thumbnail.mimeType в соответствующий тип для формата изображения

Если Диск не может создать эскиз, он всегда будет использовать ваш, если вы его предоставили.

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

Кроме того, проверьте предлагаемые решения в следующих сообщениях SO и посмотрите, поможет ли это вам:

person Teyam    schedule 16.04.2017