为LOCALE_USER_DEFAULT更改LOCALE_SISO639LANGNAME

时间:2011-09-22 07:09:12

标签: c++ winapi locale

有没有办法在运行时更改“LOCALE_SISO639LANGNAME”? 我想在运行时为“LOCALE_SISO639LANGNAME”设置另一种语言,当“GetLocaleInfo”查询时,它应该是新语言而不是系统默认语言。 顺便说一句,似乎你不能通过使用“SetLocaleInfo”来设置“LOCALE_SISO639LANGNAME”。 提前感谢您的关心。

1 个答案:

答案 0 :(得分:0)

LOCALE_SISO639LANGNAME是一个常量(C ++ #define),因此您无法在运行时更改它。如果我理解正确,您希望将此值替换为GetLocaleInfo调用作为第一个参数,以便有效地将另一个参数传递给API。

如果它完全在你的代码中(代码编辑和二进制重建可以真正完成这项工作),这将不是什么大问题,我可以假设你希望这对你只有二进制的东西有效。

如果上面的猜测是正确的,特别是你只想要它的过程,你可以钩住GetLocaleInfo入口点并修补它以拦截调用和更新参数。虽然使用它并不容易或安全,但您必须了解自己在做什么。