使用Unicode支持粘贴文本而不进行格式化AutoHotKey中的Transform出错

时间:2011-12-11 00:01:45

标签: autohotkey

我发现以下AutoHotkey代码段here无需格式化即可粘贴文本并支持Unicode:

<^<+v::                          ; Text–only paste from ClipBoard
   Clip0 = %ClipBoardAll%
   Transform, UC, Unicode         ; Save Unicode text
   Transform, Clipboard, Unicode, %UC%
   Send ^v                       ; For best compatibility: SendPlay
   Sleep 50                      ; Don't change clipboard while it is pasted! (Sleep > 0)
   ClipBoard = %Clip0%           ; Restore original ClipBoard
   VarSetCapacity(Clip0, 0)      ; Free memory
Return

然而,当我在AutoHotkey_L的最新版本上运行时,它会抱怨以下错误:

Line 4:     Parameter #2 invalid.

其中Line 4指的是行Transform, UC, Unicode ; Save Unicode text

该片段应该根据上面链接上的评论工作。有什么想法我得到这个错误?

1 个答案:

答案 0 :(得分:1)

您安装了哪个版本的AutoHotkey_L?在安装过程中,当前版本将要求您在Unicode和ANSI之间进行选择。如果选择Unicode,则Transform命令不具有Unicode子命令。我猜是因为不需要它。

来自AutoHotkey_L命令的Transform文档:

  

Unicode [,String]:(此命令在AutoHotkey_L的Unicode版本中不可用。)检索或存储Unicode文本   剪贴板。注意:整个剪贴板可以保存和恢复   ClipboardAll的意思,它允许&#34;转换Unicode&#34;经营   而不会丢失剪贴板的原始内容。

我没有使用Unicode版本,所以我无法测试,但我假设在AutoHotkey_L的Unicode版本中,从剪贴板检索到的任何文本都已经是Unicode,所以这应该可行:

<^<+v::                          ; Text–only paste from ClipBoard
   Clip0 = %ClipBoardAll%
   Clipboard = %Clipboard%  ; Convert clipboard text to plain text.
   Send ^v                       ; For best compatibility: SendPlay
   Sleep 50                      ; Don't change clipboard while it is pasted! (Sleep > 0)
   ClipBoard = %Clip0%           ; Restore original ClipBoard
   VarSetCapacity(Clip0, 0)      ; Free memory
Return