gpt4 book ai didi

delphi - 以编程方式更改 Windows XP 中的默认代码页? (来自德尔福)

转载 作者:行者123 更新时间:2023-12-03 14:59:47 26 4
gpt4 key购买 nike

有人可以建议如何以编程方式更改默认的 Windows XP 代码页(我是在 Delphi 中这样做的)吗? (这相当于进入控制面板 -> 区域设置 -> 非 Unicode 应用程序的语言)。

在这种情况下,我想切换到中文(中国),因此正在写入以下注册表字符串:HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP=936MACCP=10008OEMCP=936

(这正是更改控制面板中的非 Unicode 代码页下拉列表的作用)。我必须更改另一个设置 - 而且我更喜欢使用 Win API 调用(如果可用)而不是自己写入注册表。

我也尝试过设置HKLM\SYSTEM\CurrentControlSet\Control\Nls\语言\默认=0804(中国大陆)无济于事。

我不想更改“区域设置”本身,因为这也会更改时间/日期设置、分隔符等。

这是因为我正在使用需要渲染中文字符的 ANSI 应用程序,并且我正在编写一个工具来自动切换系统显示字符(同时保持 UI 的其他方面完好无损)。

谢谢!

邓肯

最佳答案

唯一合适的情况是您正在编写一个信息亭类型的应用程序,系统上不会运行其他任何东西。该更改将影响系统上的所有其他应用程序。

如果您只需要渲染字符并将它们放入 WideString 中,您可以通过直接调用 Windows API 的 W 版本,在旧版本的 Delphi 中渲染它们,而不是通过TCanvas 方法。也就是说,调用 DrawTextWExtTextOutW 而不是 TCanvas.TextOut ,它将绘制 Unicode 字符,而不将它们转换为系统的 ANSI 代码页。

更完整的选项是 TMS Unicode Component Pack 。它支持在 Delphi 6-2007 中创建支持 Unicode 的应用程序,并为您处理调用所有 W 函数。它运行良好,您可以像平常一样使用 TCanvas 或标题/文本属性。唯一的区别是属性都是 WideStrings。这最初是 TNT Unicode 控件包,并且有一个较旧的、不受支持的版本可用 here .

最后,您可以使用微软的AppLocale用于更改您的应用程序的 ANSI 代码页的实用程序。有从批处理脚本调用它的详细信息 here ,一个在没有导航屏幕的情况下运行它的补丁here ,以及名为 SBAppLocale 的命令行克隆。它有效,但它是一个黑客,其他选项从长远来看更好。

关于delphi - 以编程方式更改 Windows XP 中的默认代码页? (来自德尔福),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com