从Win32更改.NET Thread UI文化

时间:2018-03-22 17:23:05

标签: .net winapi localization com

我有一个应用程序,它是MFC的一部分,ATL的一部分,以及.NET的一部分 - 基础部分是MFC,但有几百个库。

进入.NET是通过暴露COM接口...某处MFC调用COM并创建一个.NET对象。有许多可能的路径,有时可能无法调用.NET。

我感兴趣的是在本地机器上用不同的语言测试我们的本地化,这可能是英语(en-US)。对于MFC的东西,我可以调用SetProcessPreferredUILanguage()SetThreadPreferredUILanguage(),程序的逻辑可以选择它。在任何单独的.NET组件中,我可以调用Thread.CurrentThread.CurrentUICulture并将其设置为文化。

但是,由于我可以在许多不同的入口点进入.NET,我只想在某处调用Windows API函数,然后在创建.NET对象并且.NET运行时是初始化后,我希望.NET运行时能够选择它。我已经试过SetProcessPreferredUILanguage()SetThreadPreferredUILanguage()SetThreadUILanguage()而没有任何运气。它们改变了Win32方面的行为,但不改变.NET方面的行为。我可以创建一些.NET COM对象,尤其是用于设置UI文化,但我不想这样做。如果我需要它,我宁愿不经历启动.NET运行时的开销,直到我需要它为止。

是否有一种方法可以从Windows API方面实现在我的应用程序中执行的.NET运行时的UI文化?

0 个答案:

没有答案