为什么此autohotkey脚本无法始终保留剪贴板内容?

问题描述:

下面是我的一个脚本片段,试图在我的指尖放置额外的Unicode令人惊叹。为什么此autohotkey脚本无法始终保留剪贴板内容?

::\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

关于为什么上述失败和我可以采取的补救措施来解决这个问题的任何想法?

在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