程序中动态设置“控制面板”中的“区域和语言选项” ( 积分: 200 )

  • 主题发起人 主题发起人 lanyaoshi
  • 开始时间 开始时间
L

lanyaoshi

Unregistered / Unconfirmed
GUEST, unregistred user!
最近写程序碰到一个问题,用户有时会将“控制面板”中的“区域和语言选项”中的语言设置为“英语”,我希望能中程序中将其还原为“中文”,找了很多资料,不知如何写,希望有知道的能指点一下,谢谢了。
1.这个命令只是能调出设置的窗口,并不能动态设置。
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
2.写注册表:HKEY_CURRENT_USER/Control Panel/International的相关值,并不能马上生效。
 
那让注册表马上生效就是了
模拟发出F5就是了
 
先调用
SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SSHORTDATE,'yyyy-MM-dd');
SetLocaleInfo(....);
然后通知系统设置更新了
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
 
有些设置修改后,光刷新注册表是没用的,消息好像也不好使。杀掉explorer.exe再重启该进程试试。
 
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); 表面上是刷新了,但其实并没有真正生效,因为我写的程序中的中文显示为“?”号,“控制面板”中的“区域和语言选项”中直接设置是可以马上生效的。
 
不知道还有人知道解决的方法没有?我之所以提出这个问题,是因为原来我用DELPHI7,用户如果不小心设置为“英文”后,软件中的中文不能正常显示造成的。我现在决定使用DELPHI2007了,初步看来可以解决此问题。不知道DELPHI2007稳定性如何?有什么要注意的地方?
 
新开一帖继续讨论DELPHI2007,http://www.delphibbs.com/delphibbs/dispq.asp?lid=3862055
 
Application.Initialize;
后加上
SetThreadLocale(2052); //中文
 
delhpi的方法已经可以解决我遇到的问题,谢谢啦!不过,SetThreadLocale(2052);不能在98下使用吧。看来只有使用DELPHI2007重新编译程序才能彻底解决中文在英文系统中的显示问题了。
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
524
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部