通過註冊表獲得系統語言

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);
}


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章