原版的 AutoHotkey 不支持 unicode ,给中文用户带来极大不便。比如,sendinput 输入中文时,必须借助剪贴板 或 自定义函数。
幸运的是,开源软件再一次带来了奇迹:早在2008年就出现了支持 unicode 的 AutoHotkey 分支——由Lexikos维护的 AutoHotkey_L。
一、AutoHotkey_L 简介
AutoHotkey_L 是 AutoHotkey 的一个第三方分支版本,由 Lexikos 维护。主要增加和增强了对象、debug调试、unicode、64位、图标等功能。
AutoHotkey_L主页:http://www.autohotkey.net/~Lexikos/AutoHotkey_L/
== AutoHotkey_L 主要特征 ==:
* Objects (extensible associative arrays).
* Interactive debugging features, when used with a compatible debugging client.
* Significant functionality developed by other community members:
+ Native 64-bit support by fincs.
+ Native COM support by Sean.
+ Native Unicode support by jackieku.
+ Support for various text encodings.
+ New DllCall arg types for portability.
+ Object-oriented file I/O.
* #if expression – Similar to #IfWinActive, but for arbitrary expressions.
* Built-in support for menu icons and improvements to icon support.
二、AutoHotkey_L 下载、安装、体验
* 选择合适版本进行下载,比如我在测试中选择了Unicode x86 。
* 将解压出的 AutoHotkey.exe 覆盖原来安装的AutoHotkey.exe。
* 新建一个 test.ahk ,注意:文件编码务必选用 utf-8 。
* 复制如下代码到 test.ahk
::test1:: 善用佳软。ひらがな 平仮名;カタカナ 片仮名。Korean/한국어/조선말。
::test2::
sendinput, 善用佳软。ひらがな 平仮名;カタカナ 片仮名。Korean/한국어/조선말。
return
* 运行 test.ahk 。(此版本的AutoHotkey.exe系统托盘图标的H字符更加粗壮)
* 在任何能正常显示 unicode 字符的程序中(比如浏览器的地址栏),键入 test1 test2 应该都能上屏指定的文字,即 sendinput 与 hotstring 都支持中文(unicode)了。
欢迎AutoHotkey爱好者分享此消息,也欢迎提供 AutoHotkey_L 其他功能的应用举例。
* 《一键去掉Tweets中的所有“RT”字符|陈轶的盛夏厅》:避免英文Windows下,StringReplace, clipboard ……含有中文时的乱码问题。
* 《SuperMemo生词捕捉,词库制作工具:QArabbit》:使用SuperMemo的朋友,欢迎使用AutoHotkey_L写的词库捕捉制作工具QARabbit
附:AutoHotkey_L 发现记
我在wordpress撰写或修改博文,一向是用gvim手写源代码。当然,用 AutoHotkey 实现了一键操作。但 AutoHotkey fileappend 创建的文件,fenc=cp936,偶尔会保存出错,显然不如utf-8格式方便。尽管知道AutoHotkey不支持unicode,但是否有奇迹能设定fenc呢?Google 『AutoHotkey fileappend utf-8』,第一条结果就见到 AutoHotkeyU,进入后发现,该分支已经合并到 AutoHotkey_L ,下载后测试『FileAppend, %clipboard%, %tmpfile%, UTF-8』成功,再试了上面的sendinput依然成功,于是,写出来与大家共享。
当然,事后进一步搜索发现,http://ahk.5d6d.com/ 论坛上早就有关于 AutoHotkey_L 的讨论了。由此可知:①经常有人火星,所以,需要进一步分享。②凡事可以更乐观地搜索。
————————–
2010-09-14: 初稿。
《 “AutoHotkey_L:支持unicode, 能发送中文的AutoHotkey分支” 》 有 33 条评论
看了这么多年的佳软 第一次 沙发
挤挤~~挤沙发!
早就知道有个AutoHotkeyU, 一直比较担心它能不能和最新的 AutoHotkey 保持同样的修正或者更新。近一年来, AutoHotkey 的更新基本停滞了。
AutoHotkey_L读取图标分组的功能挺不错的~
诡异了…发现sendinput没作用,用send可以,而且只是能send英文…
ahk文件编码utf8,应该没啥问题啊…
数个月前,为了在Twitter上发推更容易,仿照笑来的Mac技术贴:“一键去掉Tweets中的所有“RT”字符”,写了一个AHK脚本,结果在我的英文windows上乱码,试了很多方法都不成功,今天终于成功鸟。。。内流满面。。。
顺便分享一下这段:
;ctrl+alt+l, remove @chenyi1976 and RT: in twhirl and firefox.
^!l::
BlockInput On
oCB := ClipboardAll ; old Clipboard
send ^a
sleep 25
Send, ^c
sleep 25
StringReplace, clipboard, clipboard, @chenyi1976, , All
StringReplace, clipboard, clipboard, RT:, , All
Send, ^v
sleep 25
ClipBoard := oCB ; restore ClipBoard
BlockInput Off
return
以下是根据上面代码写出的Autoit3代码,实现同样功能,没测试。
HotKeySet(“^!i”,_remove())
func _remove()
$sCB=Clipget()
send(“^a”)
send(“^c”)
Clipput(stringreplace(stringreplace(Clipget(),”RT”,””),”@chenyi1976″,””))
send(“^v”)
Clipput($sCB)
HotKeySet(“^!i”,_remove())
end func
while 1
sleep(100)
wend
[…] 我的是windows版本的,需要AutoHotKey支持,而且必须是Unicode版本的,否则中文会乱码;具体参见:http://xbeta.info/autohotkey_l.htm […]
这个不是早有了么.
使用SuperMemo的朋友,欢迎使用AutoHotkey_L写的词库捕捉制作工具QARabbit( http://hiforrest.blogbus.com/logs/65834873.html )
(xbeta注:已补入本文)
我用的是ux…平时都是自己加词或者搜现有词库..
然后用Emeditor写个宏转成ux支持的格式.
博主你好 , 请教您有没有一款剪贴板支持带超链接的文字 复制粘帖?
说的很对啊,感谢分享!
其实很多国外的软件都没有考虑中国人的使用及习惯,殊不知中国是个很大的软件市场!
可以试试ClipCache?
问下善用佳软, Autohotkey 支持下面这样的吗?
AutoIt3.exe [/ErrorStdOut] [/AutoIt3ExecuteScript] 文件 [参数 …]
(xbeta注:我只是AutoHotkey非常非常初级的用户,基本就用一些sendinput模拟键盘鼠标功能,其他确实不了解。欢迎其他网友答复此问题。)
支持.
AutoHotkey.exe [Switches] [Script Filename] [Script Parameters]
Switches: 零个或多个下列开关:
/f 或 /force — 无条件运行,跳过任何警告对话框。
/r 或 /restart — 表明脚本将被重新加载(在内部,Reload 命令也使用这个开关)。
/ErrorStdOut — 把妨碍脚本启动的语法错误发送到标准输出而不是显示一个对话框。详见 #ErrorStdOut
具体见帮助.
AutoHotkey还活着?
晕 我用Autoit3好几年了 这个据说就是AutoHotkey的升级版 个人感觉比AutoHotkey好得多
一直用autohotkey..和autoit差不多吧….
基本功能 脚本语言都差不多…而且支持winapi…
自己用一般没啥搞不定的.
呵呵,好像语言很复杂的样子
我想以后AutoHotkey可能以AutoHotkey_L版本为主了,当前主分支近一年没有更新,而L版本持续在更新中.目前正在翻译主分支(1.0.48.05版本)的帮助文件,下一步在考虑是否翻译L版本的帮助,并介绍相应的工具等,想了解翻译和其他相关情况,请移步至中文论坛:http://ahk.5d6d.com/thread-3259-1-1.html
我改用autohotkey_l后,发现热字符串替换都失效了,比如::btw::by the way
请问大家也有这样的问题吗?
(xbeta注:没遇到这种情况)
我遇到的情况是,安装了autohotkey_L,直接覆盖掉原来的autohotkey,然后新一个ahk,内容如下:(编码用UTF-8)
WinActivate,seeee.txt – 记事本
send,请发送owiejfewjfekjwsf
F5运行,不料运行结果只有中国字“请发送”后面的洋文,“owiejfewjfekjwsf”,请高人指点迷津
多谢!!
(xbeta注:测试成功,全部发送。)
首先,谢谢佳软的回复,但对我来说,这的确是很奇怪的现象,就是不能成功你的版本
可以共享一下吗,我的邮箱: pesicolar@gmail.com
补充:
我是vista ultimate系统,对些问题我尝试了三种方案,均不成功:
1.将老版的autohotkey(非L)的文件夹改名,将L版安装到d:Program FilesAutoHotkey目录下
2.将老版的删除,将L版安装到C:Program FilesAutoHotkey目录下
3.老版本不动,L版覆盖安装
以上三种情况中,第1种和第2种是send命令失效,中英文均不能发送
第三种情况是,send只能发送英文,不能发送中文
真是搞不懂L版,为什么有在我的机器上就不行呢,求遇到此问题的高人解决之道,在此大谢!!
我在官网看到你的提问了,也照着做了多次测试,win7下没问题,主要出问题的是xp,表现和你在官网论坛中描述的一样。
最后解决发现最关键的是要:关闭360的驱动防火墙。另外一点可能是要安装版的才可以。
@geekey,
果然是360防火墙的问题。。。。
360太SHI了
AutoHotkey_L支持unicode, 能发送中文的AutoHotkey分支
这很不错
但AutoHotkey_L为什么不能用autohotkey.ini来加载多个脚本呢
无奈放弃了用回AutoHotkey
把.ini改为.ahk就行了……
和原来的猜想相似,现在AutoHotkey_L已经放到官方主页中.我想以后主分支可能不打算更新了,代之为AutoHotkey_L版本.
[…] | 點擊數: 1 / 1 因為重新安裝家用舊的HP筆電,在下載Autohotkey時發現Unicode的版本已經出現在官方下載網頁裡了!原來這個Unicode版本是由Lexikos開發的分支,其開發沿革在這篇AutoHotkey_L:支持unicode, 能?送中文的AutoHotkey分支有詳細的介紹,它的說明文件可由此處瀏覽。 […]
XP系统下AHK_L发送中文,要关闭360的驱动防火墙! 屡试不爽。
看来不错啊,想试试看
[…] AutoHotkey_L 的继承地位,并改称原版本为 AutoHotkey Basic。参见a、b […]