ID: Q196787
The information in this article applies to:
The Active Accessibility Redistribution Kit (RDK) determines the language of the system by extracting it from the version information in User.exe.
The RDK compares the primary language ID [using the macro PRIMARYLANGID(lcid)] for the RDK (derived from Oleaccrc.dll) to the primary language ID for User.exe.
Below is a code snippet to extract the language information:
#define NUM_TCHARS_NEEDED_FOR_BACKSLASH (1)
#define NUM_TCHARS_NEEDED_FOR_NULL_TERM (1)
#define BACKSLASH (TEXT("\\"))
UINT nLenOfSysDirPath = 0;
LPTSTR lpszSysDir = NULL;
LPTSTR lpszSysFile = NULL;
UINT nLen = 0;
DWORD dwUseless = 0;
LPVOID lpVersionData = NULL;
DWORD dwSize = 0;
LCID lcidUSER;
TCHAR szUserLangName [64];
nLen = GetSystemDirectory( NULL, 0 );
nLenOfSysDirPath = nLen + NUM_TCHARS_NEEDED_FOR_BACKSLASH;
lpszSysDir = (LPTSTR) LocalAlloc( LPTR, nLenOfSysDirPath *
sizeof( TCHAR ) );
GetSystemDirectory( lpszSysDir, nLen );
if ( lstrcmp( (LPCTSTR) lpszSysDir[ lstrlen( lpszSysDir ) ], (LPCTSTR)
BACKSLASH ) )
lstrcat( lpszSysDir, (LPCTSTR) BACKSLASH );
lstrcpy( lpszSysFile, (LPCTSTR) lpszSysDir );
lstrcat( lpszSysFile, (LPCTSTR) TEXT("USER.EXE"));
dwSize = GetFileVersionInfoSize(lpszSysFile,&dwUseless);
if (dwSize)
{
lpVersionData = LocalAlloc(LPTR,(UINT)dwSize);
if (GetFileVersionInfo(lpszSysFile,dwUseless,dwSize,lpVersionData))
{
if(VerQueryValue(lpVersionData,TEXT("\\VarFileInfo\\Translation"),
(VOID**)&lpdwTrans, &cbTrans))
{
lcidUSER = LOWORD(lpdwTrans[0]);
}
} // end we got version data
LocalFree((HLOCAL)lpVersionData);
}
VerLanguageName (lcidUSER,szUserLangName,sizeof(szUserLangName));
This information is pertinent to Windows 95, Windows 98 and Windows NT 4.0
Service Pack 4 and later versions.
MSAA
Additional query words:
Keywords : kbAAcc kbNTOS kbSDKPlatform kbWinOS
Version : WINDOWS:
Platform : WINDOWS
Issue type : kbinfo
Last Reviewed: December 5, 1998