您的位置:首页 > 其它

通过注册表获得系统语言

2014-12-22 17:11 351 查看
Delphi:

//必ず、Registryユニットを引用する。
function  getOSLanguage:Integer;
const
LNG_ENG =1 ;  //英語
LNG_JPN =2 ;  //日本語
LNG_CHN =3 ;  //中国語
var
reg: TRegistry;
tmp: String;
oslang:Integer;
begin
tmp := '';

reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.OpenKey('SYSTEM\CurrentControlSet\Control\Nls\Language', False) = True then
begin
if reg.ValueExists('Default') = True Then
tmp := reg.ReadString('Default');
reg.CloseKey;
end;
finally
reg.Free;
end;

oslang := StrToIntDef('$'+tmp, 0);
//デフォルトはOSの言語
Case oslang of
$0409: Result := LNG_ENG;//英語
$0411: Result := LNG_JPN;//日本語
$0804: Result := LNG_CHN;//中国語
else Result := LNG_ENG;//英語
end;

end;


C++:

void getOSLanguage()
{
char regname[]="SYSTEM\\CurrentControlSet\\Control\\Nls\\Language";
char value[] ="0804";//中国語
char OSlanguage[] = "Japanese";
long  length=0;
int  language = 0;
HKEY hkResult;
int ret=RegOpenKey(HKEY_LOCAL_MACHINE,regname,&hkResult);
if( ret == ERROR_SUCCESS)
{
ret = RegQueryValue(hkResult,regname,value,&length);
if( ret == ERROR_SUCCESS)
{
//英語:0x0409 日本語:0x0411 中国語:0x0804
language = atoi("0x"+value);
}
}
else
{
printf("Registry Open Error!");
}
RegCloseKey(hkResult);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: