EXE ファイルなど,プロパティのバージョン情報に言語が存在する.
その言語情報を取得するには,GetFileVersionInfo() と VerQueryValue()
を使用する.
struct CMyLANGANDCP
{
WORD m_wLanguage;
WORD m_wCodePage;
};
上記の構造体を定義する.
CMyLANGANDCP *pLang;
VerQueryValue( lpVer, "\\VarFileInfo\\Translation", (LPVOID*)&pLang, &uiVerSize );
pLang に CMyLANGANDCP の配列への先頭アドレスが渡される.
uiVerSize からこの配列の要素数が判断できる.
あとは各言語について
wsprintf(langcharset, "%04x%04x", pLang->m_wLanguage, pLang->m_wCodePage);
とすれば,lang-charset が取得できる.
pLang はポインタのポインタを渡している.
pLang に予めメモリを割り当てる必要はなく,逆に割り当ててしまうと迷子となり
リークする原因となってしまう.
VerQueryValue() を呼出すことにより,予め lpVer に割り当てられていたメモリ
内の LANGID を示す位置が pLang に返される.
参照
OSの言語
ファイルのプロパティ
バージョン取得