Иконки из удаленных файлов

Я начал кодировать клиентское приложение FTP (для удовольствия). Я пытаюсь представить удаленно размещенные файлы с помощью значков. Например, предположим, что я просматриваю корневую папку FTP-сервера (/) и хочу отобразить файл Backup.zip с ассоциацией значков из этой клиентской операционной системы. В некоторых системах это может быть значок сжатия Windows, а в других операционных системах это могут быть значки WinZip или WinRAR.

У меня есть клиент, просматривающий локальные файлы с помощью функции SHGetFileInfo(). Это прекрасно работает с локальными файлами, однако для этой функции требуется физический файл, чтобы получить соответствующий значок. Таким образом, это не будет работать с удаленно размещенными файлами. Я нашел несколько примеров загрузки значков с заданным расширением файла, и именно здесь возникает вопрос... Как лучше всего связать значки с удаленными файлами?

  1. Каждый раз заходите в реестр и ищите расширения для ассоциаций значков.
  2. Создайте 1-байтовые файлы с каждым расширением и используйте функцию SHGetFileInfo() для удаленных файлов (используя локальные 1-байтовые файлы в качестве ассоциации для удаленных файлов).
  3. Другие стратегии???

Что бы сделала профессиональная компания-разработчик программного обеспечения, создающая FTP-клиент?

Спасибо за уделенное время.

-Джесси Хоул


person Jessy Houle    schedule 19.01.2009    source источник


Ответы (2)


Я предлагаю вам не заходить в реестр каждый раз: заходите, если вам это нужно, но если вы уже были для данного типа файла, запомните/кэшируйте этот результат (в вашей программе) и повторно используйте его.

person ChrisW    schedule 19.01.2009
comment
Доступ реестра к HKCR будет достаточно быстрым, так как эта часть, скорее всего, будет закэширована. Я ожидаю, что любой удаленный процесс листинга файлов будет на несколько порядков медленнее. Однако кэширование самих значков должно быть полезным. - person Tomalak; 19.01.2009

Используйте здесь процедуру из предыдущего вопроса о переполнении стека по той же идее и используйте реестр вместо фактического файла.

Как я могу получить значок типа файла, который Проводник Windows показывает?

person Jeff Cuscutis    schedule 19.01.2009