Здравствуйте, AntonSC, Вы писали:
ASC>Знаем, что в англоязычной ОС можно изменить язык и местоположение, например, Россия, и тогда в реестре
ASC>HKEY_CURRENT_USER\Control Panel\International\Locale будет равен 419.
ASC>Но как программно определить языковую версию ОС? Например, вместо надписи на кнопке "Пуск" английское слово "Start",хотя там Locale = 419.
ASC>Заранее спасибо!
Посмотреить на то, какая локализация у ресурсов версии например в kernel32.
{Получаем языки, которые прописаны в kernel32}
FixSize := GetFileVersionInfoSize('kernel32.dll', Temp);
GetMem(PFix, FixSize);
IsRussian := FALSE;
try
if GetFileVersionInfo('kernel32.dll', Temp, FixSize, PFix)
then begin
{Извлекаем ресурс с языками}
if VerQueryValue(PFix, '\VarFileInfo\Translation', Pointer(LangIDS), LangIDLng)
then begin
{Проверяем наличие в библиотеке информации с русским языком}
while LangIDLng > 0 do begin
IsRussian := IsRussian or ((LangIDS^ and $FFFF) = $0419);
Inc(LangIDS);
Dec(LangIDLng, SizeOf(LangIDS^));
end;
end;
end;
except
...
end;
P.S. Выдрал из живого проекта — работает
С уважением Михаил Копачев
... << RSDN@Home 1.1.4 @@subversion >>