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

2024-01-04

谁能建议如何以编程方式更改默认的 Windows XP 代码页(我是在 Delphi 中执行此操作)? (这相当于进入控制面板 -> 区域设置 -> 非 Unicode 应用程序的语言)。

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

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

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

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

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

Thanks!

Duncan


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

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

更完整的选项是TMS Unicode 组件包 http://www.tmssoftware.com/site/tmsuni.asp。它支持在 Delphi 6-2007 中创建支持 Unicode 的应用程序,并处理调用所有W为您提供功能。它运行良好,您可以像平常一样使用 TCanvas 或标题/文本属性。唯一的区别是属性都是 WideStrings。这最初是 TNT Unicode 控件包,并且有一个较旧的、不受支持的版本可用here http://www.yunqa.de/delphi/doku.php/products/tntunicodecontrols/index.

最后,您可以使用微软的用于更改您的应用程序的 ANSI 代码页的实用程序。有从批处理脚本调用它的详细信息here http://www.codeproject.com/KB/vb/apploc_automation.aspx,一个在没有导航屏幕的情况下运行它的补丁here http://opcode0x90.wordpress.com/2008/01/09/patch-for-applocale/,以及一个名为的命令行克隆SB应用程序语言环境 http://www.steelbytes.com/?mid=45。它有效,但它是一个黑客,其他选择从长远来看更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Django:如何为应用程序添加中文支持

    我正在尝试将中文添加到我用 Django 编写的应用程序中 但我确实遇到了困难 我花了半天时间尝试了不同的方法 但没有成功 我的应用程序支持几种语言 这是设置 py file TIME ZONE Europe Dublin LANGUAGE
  • 智能排序 Localized.strings 文件

    In my Localizable Strings我尝试按字母顺序排列所有对 是否可以按字母顺序重新排序我的Localizable strings 也许使用 genstring 或特殊的 bash 脚本 在这里我还有额外的要求需要完成 1
  • 使用普通画布/文本输出更新LayeredWindow

    有没有一种方法可以使用画布在表单上绘图 然后使用 updatelayeredwindow 这样表单就不可见 但文本可见 就像只显示文本的半透明表单一样 如果没有 那么有没有办法只用画布 opengl directx 制作某种半透明形式 我想
  • 如何在 OSX 上的应用程序名称下创建子项菜单?

    如何在下面添加TMenuItemProject1以上Quit在下面的屏幕截图上 我创建了一个 TMenuBar 并选中了 UseOSMenu 属性 我添加的第一个 TMenuItem 是主栏中的第二个 TMenuItem 您可以通过将 II
  • 改变 Silverlight 应用程序的文化

    我目前正在开发 Silverlight 应用程序 我有一些数据网格 文本块 我使用标准绑定来显示值 其中一些是日期 例如
  • 消息框按钮 - 设置语言?

    当你使用MessageBox Show 你有一个选择消息框按钮 http msdn microsoft com en us library system windows forms messageboxbuttons 28v vs 110
  • 如何在滚动框上创建缓慢的滚动效果?

    我喜欢在滚动框中平移图像后创建平滑的减慢滚动效果 就像平移地图一样谷歌地图 http maps google com 我不确定它是什么类型 但行为完全相同 当快速移动地图时 当您释放鼠标时它不会立即停止 而是开始减慢速度 有什么想法 组件
  • 是否可以在编译时/运行时生成标记字符串的全局列表?

    因此 我正在努力将我的 C 应用程序翻译成多种语言 我目前正在使用的是这样的 define TR x lookupTranslatedString currentLocale x wcout lt lt TR L This phrase i
  • 如何根据输入的内容过滤组合框的内容?

    我们有一个包含 100 多个项目的组合框 当我们在组合框中输入字符时 我们想要过滤掉项目 例如 如果我们输入 ac 并单击下拉选项 那么我们希望它仅显示以 ac 开头的项目 我怎样才能做到这一点 也许您会更喜欢使用操作系统内置的自动完成功能
  • iOS 7 故事板本地化与属性标签

    我正在使用 ibtool 从我的所有语言的基本情节提要中生成字符串文件 出于某种原因 ibtool 没有提取UILabel风格为 attributed 我没有这些标签的键 值对 有人知道为什么吗 我最终得出的结论是 使用 ibtool 无法
  • 带位图的简单组合框

    如何将位图放入组合框中并将样式设置为简单 例如 Google Chrome 的右侧有星号 Firefox 的右侧有箭头 我尝试了这段代码 procedure TForm2 ComboBox1DrawItem Control TWinCont
  • 如何仅使用 TADOQuery 组件将图像插入数据库

    我有一个简单的基本问题 我正在尝试使用将图像插入数据库Insert与其他列值的语句也使用TADOQuery成分 由于代码已经由某人编写 因此我想在此处放置一些虚拟示例代码 以供您澄清相应的步骤 请注意 这可以正常工作TQuery组件 因为我
  • 处理 TShellListView 后代中的文件放置

    我正在尝试创建 TShellListView 的后代 它接受从 Windows 资源管理器中删除的文件 我想在组件定义中处理拖 放操作 而不必在任何使用该组件的应用程序中实现它 我找到了接受从 Windows 资源管理器中拖放的文件的示例
  • 具有 csOwnerDrawFixed 样式的组合框如何表现得像 csDropDown 样式?

    我正在使用一个组合框 http docwiki embarcadero com Libraries en Vcl StdCtrls TComboBoxstyle 属性设置为的组件csOwnerDrawFixed 我实现了绘图项一切工作正常
  • 本地化现有的 iOS 应用程序

    我不敢相信以前没有人问过这个问题 要么是我的编码实践太无组织性 要么是我没有使用正确的关键字 How can I localize an existing iOS app that does not use NSLocalizedStrin
  • 当responseText包含有效的Xml时,IXMLHttpRequest.responseXml为空,没有解析错误

    我正在从中获取一些 XML政府网站 http www bankofcanada ca stats assets rates rss noon en all xml http www bankofcanada ca stats assets
  • 在 Delphi 中使用 XML(将特定数据返回到变量)

    过去几天我一直在尝试使用 Delphi 2010 和 MSXML 我是一个极端的新手 需要一点指导 var MemoryStream TMemoryStream XMLPath String sName String XMLDoc vari
  • 如何从 VCL.Graphics 获取所有已注册的文件格式...但 64 位

    在我的 32 位应用程序中 我使用FindRegisteredPictureFileFormats 单元由 Cosmin Prund 提供 https stackoverflow com a 14677532 505088 gt 如何从图形
  • 如何更改 TPageControl 上标签的方向?

    我是 Delphi 的新手 再次强调 我在 1994 年就使用过 Delphi 我现在有 Delphi 2009 Pro 来自Java 我发现对象继承非常晦涩 我的用户想要选项卡位于左侧的选项卡式页面 但是 TPageControl 不允许
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移

随机推荐