シェル項目の表示名を取得するにはSHGetNameFromIDList
関数を使えます。C++環境ではIShellItem
インターフェイスを使いますが、Pythonなどでインターフェイスを介したくない場合に便利です。
#include <format> #include <iostream> #define STRICT #define NOMINMAX #include <Windows.h> #include <ShlObj.h> // WIL 1.0.220201.1 (Microsoft) #include "wil/com.h" int main() { auto coinit = wil::CoInitializeEx(); if (!coinit) THROW_HR(E_FAIL); wil::unique_cotaskmem_ptr<ITEMIDLIST> pidl; THROW_IF_FAILED(SHGetKnownFolderIDList( FOLDERID_Fonts, KF_FLAG_DEFAULT, nullptr, wil::out_param(pidl))); wil::unique_cotaskmem_string name; THROW_IF_FAILED(SHGetNameFromIDList( pidl.get(), SIGDN_NORMALDISPLAY, name.put())); std::wcout.imbue(std::locale("", std::locale::ctype)); std::wcout << std::format(L"フォントフォルダの表示名:{}", wil::string_get_not_null(name)) << std::endl; return S_OK; }