(我正在尝试使 Internet 上的 SendKeys 代码与扩展字符一起使用。)Sendkeys 是对 VB SendKeys 的模仿。我在 Internet 上看到了几种算法,以及 Delphi 7 附带的一种。我的程序使用它来将击键发送到其他程序,以使数据输入更快、更一致。除了 Ord() 报告的数字超过 255 的字符外,它运行良好。
自从发布这个问题后,我发现 Character Map 报告 Alt+0128 到 Alt+255。事实证明,Ord() 只报告了 26 个这样的字符,看起来是一个 unicode 值。所以我现在有一个丑陋的解决方法,只是将 Ord() 报告的值替换为 Character Map 报告的备用值,较低的值。所以我的 Sendkeys 现在看起来与记事本中的 Ansi 编码兼容。
我希望进行像 AnsiChar() 这样的简单字符转换,但这会产生完全错误的 Ord() 值。
对于所有这些问题,我都使用 Delphi XE2 和 Arial 字体。Windows 字符映射实用程序报告 Alt + 0147 创建了“左双引号”。
这个组合键在 Delphi 控件、记事本和 Word 中提供“字符”。
我所有的互联网研究都说使用 Ord() 来确定字符的数值:
Procedure ShowNumericKeypadCode(ch: Char);
begin
showmessage('Key code = ' + Format('%4.4d',[Ord(ch)]));
end;
但这会返回 8220,而不是 0178。Alt+8220 在记事本和 Delphi 控件中产生 ∟,但在 Word 中仍然产生“。
这显然与 Ansi 与 Unicode 有关,但我不知道如何在 Delphi 中编写一个返回 0178 而不是 8220 的函数。
iConv 不会有帮助,因为目标是拥有一个独立的程序。谢谢。