1

这是我的一个脚本片段,试图将额外的 Unicode 功能放在我的指尖。

::\iff::
    SendUnicode("⇔")
    return

; many rules later...

SendUnicode(char){
    ClipSaved := ClipboardAll ;;;
    ;apparently this is the only way AHK can handle Unicode.
    Transform, Clipboard, Unicode, %char%
    SendInput ^v
    Clipboard := ClipSaved ;;;
    return
}

不幸的是,我不得不注释掉标有 的行,;;;因为它们在保留剪贴板内容时给出了不一致的结果。具体来说,我遇到的最常见问题是粘贴现有剪贴板内容而不是char.

关于上述失败的原因以及我可以采取哪些措施来解决问题的任何想法?

4

1 回答 1

2

在 Windows 上,剪贴板可以保存不同类型的数据。当您粘贴时,应用程序会检查哪些类型的数据可用并请求一种或多种类型,然后决定如何使用它。如果剪贴板上已经有数据,并且 AutoHotkey 将 unicode 添加到剪贴板而不清除它,那么应用程序可能会看到并请求其他数据而不是 unicode。

这些是 Windows 上可用的标准剪贴板格式:http: //msdn.microsoft.com/en-us/library/ms649013 (VS.85).aspx

Autohotkey 可能以 CF_UNICODE 格式粘贴,而应用程序正在请求陈旧的 CF_TEXT 数据。

您应该能够使用 Autohotkey_L 的发送功能绕过剪贴板要求。http://www.autohotkey.net/~Lexikos/AutoHotkey_L/

使用 Autohotkey_L 尝试此论坛帖子中的代码:http ://www.autohotkey.com/forum/viewtopic.php?p=272379#272379

于 2010-03-15T16:03:07.160 回答