локализованная версия GetFileTitle? - PullRequest
1 голос
/ 23 ноября 2010

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

c: \ images \ jellyfish.png - обозреватель Win 7 и встроенная программа просмотра изображений отображают слово "Méduses" для французского выигрыша 7. Это верно для другихверсии windows?

GetFileTitle удаляет только расширение и путь к папке, давая мне «медузу», а это не то, что мне нужно, и после прочтения MSDN и Google кажется, что формат Windows Media *Интерфейс 1006 * здесь не поможет.Либо я потерял свои навыки поиска в Google, либо это очень плохо задокументировано.Помогите пожалуйста?

спасибо

1 Ответ

3 голосов
/ 23 ноября 2010

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

Итак, вкратце, вам нужно получить PIDL для файла (SHParseDisplayName), связать его с родительской папкой (SHBindToParent), а затем запросить отображаемое имя с помощью флага SHGDN_INFOLDER.

Приложение. Еще более простой способ (о котором я полностью забыл) - использовать SHGetFileInfo для получения отображаемого имени с флагом SHGFI_DISPLAYNAME.Это означает, что вам не нужно возиться с PIDL.SHGetFileInfo, по сути, является оболочкой для различных COM-классов оболочки, таких как IShellFolder. В любом случае, ключом является использование оболочки для получения отображаемого имени, а не базовых функций API.

...