编辑:不要浪费时间看我的回答。相反,阅读社区维基回答(由Udo Klein撰写),它更容易理解并且可以正常工作。
如何使用最新的autohotkey版本发送Unicode字符?
(无需先前的Unicode兼容版本即可工作)
很难找到清晰的信息。因此,为了让初学者(像我一样)更清楚,请注意:
- 复制/粘贴您脚本末尾的“代码A”(应以ANSI编码)
- 将“代码B”复制/粘贴到您的脚本顶部
- 在此处找到您的Unicode字符代码 http://www.utf8-chartable.de/unicode-utf8-table.pl
- 复制“U+”后面的4个数字
- 在“代码B”(在您的脚本顶部)中:更改您需要的键(在“::”之前)
- 在“代码B”(在您的脚本顶部)中:将您找到的Unicode粘贴到2.之后的0x(而不是“2260”)
- 保存您的脚本
- 双击您脚本的图标,它将替换/更新先前的版本
代码A:
SendUnicodeChar(charCode)
{
VarSetCapacity(ki, 28 * 2, 0)
EncodeInteger(&ki + 0, 1)
EncodeInteger(&ki + 6, charCode)
EncodeInteger(&ki + 8, 4)
EncodeInteger(&ki +28, 1)
EncodeInteger(&ki +34, charCode)
EncodeInteger(&ki +36, 4|2)
DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
}
EncodeInteger(ref, val)
{
DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)}
代码 B:
!+^D:: ; when press CTRL+ALT+SHIFT will output "≠"
{
SendUnicodeChar(0x2260)
}
return
(请留意空格!)
需要改进:
不知何故,此脚本无法处理http://unicode-table.com/提供的所有Unicode字符,但也许有人会友善地告诉我们为什么某些Unicode可以工作而其他Unicode不能,并且也许会告诉我们如何使其适用于该网站上的任何Unicode字符。
例如,这个http://unicode-table.com/en/0609/就无法工作。有什么想法吗?