如何检测是否为中文操作系统.?(200分)

  • 主题发起人 主题发起人 总有爱
  • 开始时间 开始时间

总有爱

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,谢谢!!
 
单击“开始→运行”,在弹出的运行对话框中键入“REGEDIT”,回车后打开开注册表编辑器,依次展开[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/Nls/Language ]分支,在右侧窗口中找到字符串值“Default”和“InstallLanguage”,分别双击它们,在弹出的编辑对话框中将其数值数据由"0804"修改为"0409"(0804是简体中文的语言代号.0409是英文的语言代号),单击“确定”按钮保存后,关闭注册表编辑器。重启计算机后,上网下载并打上SP2的英文补丁再重启几次就可以了.(此方法只能用于XP,其它的系统我没试过.)
读出来就知道。
也许还有api可用
 
试试下面的方法:
方法一:
可以通过TRegistry读取注册表来获取当前系统语言信息。具体注册表位置是:
Key: HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Nls/Locale
Item: (默认)
Value: 00000804 表示Chinese(PRC),说明是中文Win95
00000409 表示美国英语,说明是西文Win95

方法二:
可以使用以下代码:936是简体Windows95的code page
if (GetSystemMetrics(SM_DBCSENABLED) > 0) and (IsValidCodePage(936) ) then
bChineseMode := True
else
bChineseMode:=False;
 
读注册表中的值就可以了
//读区域和标准信息
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Control Panel/International', TRUE);
LanguageSet := reg.readstring('Locale');
LanguageCode := reg.readstring('iCountry');
LanguageName := reg.readstring('sCountry');
iTimers := reg.readstring('iTimers');
。。。。。。
if LanguageSet <> '00000804' then begin
reg.WriteString('Locale', '00000804');
reg.WriteString('iCountry', '86');
reg.WriteString('sCountry', 'People' + #39 + 's Republic of China');
LanguageChange := TRUE;
end;
finally
reg.closekey;
reg.free;
 
谢谢三位,结贴.
 
后退
顶部