AutoHotkey_L:支持unicode, 能发送中文的AutoHotkey分支


AutoHotkey原版的 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 条评论

  1. Jnife 的头像
    Jnife

    看了这么多年的佳软 第一次 沙发

    1. 小杰 的头像
  2. sfufoet 的头像
    sfufoet

    早就知道有个AutoHotkeyU, 一直比较担心它能不能和最新的 AutoHotkey 保持同样的修正或者更新。近一年来, AutoHotkey 的更新基本停滞了。

  3. 飘流 的头像

    AutoHotkey_L读取图标分组的功能挺不错的~

  4. 飘流 的头像

    诡异了…发现sendinput没作用,用send可以,而且只是能send英文…
    ahk文件编码utf8,应该没啥问题啊…

  5. chenyi1976 的头像

    数个月前,为了在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

    1. Chi 的头像
      Chi

      以下是根据上面代码写出的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

  6. […] 我的是windows版本的,需要AutoHotKey支持,而且必须是Unicode版本的,否则中文会乱码;具体参见:http://xbeta.info/autohotkey_l.htm […]

  7. wgf4242 的头像
    wgf4242

    这个不是早有了么.

  8. Forrest 的头像

    使用SuperMemo的朋友,欢迎使用AutoHotkey_L写的词库捕捉制作工具QARabbit( http://hiforrest.blogbus.com/logs/65834873.html
    (xbeta注:已补入本文 )

    1. wgf4242 的头像
      wgf4242

      我用的是ux…平时都是自己加词或者搜现有词库..
      然后用Emeditor写个宏转成ux支持的格式.

  9. quickR 的头像
    quickR

    博主你好 , 请教您有没有一款剪贴板支持带超链接的文字 复制粘帖?

  10. 痛风 的头像

    说的很对啊,感谢分享!

  11. 塑料周转箱 的头像

    其实很多国外的软件都没有考虑中国人的使用及习惯,殊不知中国是个很大的软件市场!

  12. wgf4242 的头像
    wgf4242

    可以试试ClipCache?

  13. josses 的头像
    josses

    问下善用佳软, Autohotkey 支持下面这样的吗?
    AutoIt3.exe [/ErrorStdOut] [/AutoIt3ExecuteScript] 文件 [参数 …]
    (xbeta注:我只是AutoHotkey非常非常初级的用户,基本就用一些sendinput模拟键盘鼠标功能,其他确实不了解。欢迎其他网友答复此问题。 )

    1. wgf4242 的头像
      wgf4242

      支持.
      AutoHotkey.exe [Switches] [Script Filename] [Script Parameters]
      Switches: 零个或多个下列开关:
      /f 或 /force — 无条件运行,跳过任何警告对话框。
      /r 或 /restart — 表明脚本将被重新加载(在内部,Reload 命令也使用这个开关)。
      /ErrorStdOut — 把妨碍脚本启动的语法错误发送到标准输出而不是显示一个对话框。详见 #ErrorStdOut

      具体见帮助.

  14. Chi 的头像
    Chi

    AutoHotkey还活着?
    晕 我用Autoit3好几年了 这个据说就是AutoHotkey的升级版 个人感觉比AutoHotkey好得多

    1. wgf4242 的头像
      wgf4242

      一直用autohotkey..和autoit差不多吧….
      基本功能 脚本语言都差不多…而且支持winapi…
      自己用一般没啥搞不定的.

  15. 歌魔 的头像
    歌魔

    呵呵,好像语言很复杂的样子

  16. amnesiac 的头像
    amnesiac

    我想以后AutoHotkey可能以AutoHotkey_L版本为主了,当前主分支近一年没有更新,而L版本持续在更新中.目前正在翻译主分支(1.0.48.05版本)的帮助文件,下一步在考虑是否翻译L版本的帮助,并介绍相应的工具等,想了解翻译和其他相关情况,请移步至中文论坛:http://ahk.5d6d.com/thread-3259-1-1.html

  17. laphy 的头像
    laphy

    我改用autohotkey_l后,发现热字符串替换都失效了,比如::btw::by the way
    请问大家也有这样的问题吗?
    (xbeta注: 没遇到这种情况)

    1. geekey 的头像
      geekey

      我遇到的情况是,安装了autohotkey_L,直接覆盖掉原来的autohotkey,然后新一个ahk,内容如下:(编码用UTF-8)
      WinActivate,seeee.txt – 记事本
      send,请发送owiejfewjfekjwsf

      F5运行,不料运行结果只有中国字“请发送”后面的洋文,“owiejfewjfekjwsf”,请高人指点迷津
      多谢!!

      (xbeta注:测试成功,全部发送。 )

      1. geekey 的头像
        geekey

        首先,谢谢佳软的回复,但对我来说,这的确是很奇怪的现象,就是不能成功你的版本
        可以共享一下吗,我的邮箱: pesicolar@gmail.com
        补充:
        我是vista ultimate系统,对些问题我尝试了三种方案,均不成功:
        1.将老版的autohotkey(非L)的文件夹改名,将L版安装到d:Program FilesAutoHotkey目录下
        2.将老版的删除,将L版安装到C:Program FilesAutoHotkey目录下
        3.老版本不动,L版覆盖安装
        以上三种情况中,第1种和第2种是send命令失效,中英文均不能发送
        第三种情况是,send只能发送英文,不能发送中文
        真是搞不懂L版,为什么有在我的机器上就不行呢,求遇到此问题的高人解决之道,在此大谢!!

        1. sunwind 的头像

          我在官网看到你的提问了,也照着做了多次测试,win7下没问题,主要出问题的是xp,表现和你在官网论坛中描述的一样。
          最后解决发现最关键的是要:关闭360的驱动防火墙。另外一点可能是要安装版的才可以。

        2. Gioseo 的头像

          @geekey,
          果然是360防火墙的问题。。。。
          360太SHI了

  18. yc51 的头像
    yc51

    AutoHotkey_L支持unicode, 能发送中文的AutoHotkey分支
    这很不错

    但AutoHotkey_L为什么不能用autohotkey.ini来加载多个脚本呢
    无奈放弃了用回AutoHotkey

    1. 100730088 的头像
      100730088

      把.ini改为.ahk就行了……

  19. amnesiac 的头像
    amnesiac

    和原来的猜想相似,现在AutoHotkey_L已经放到官方主页中.我想以后主分支可能不打算更新了,代之为AutoHotkey_L版本.

  20. […] | 點擊數: 1 / 1 因為重新安裝家用舊的HP筆電,在下載Autohotkey時發現Unicode的版本已經出現在官方下載網頁裡了!原來這個Unicode版本是由Lexikos開發的分支,其開發沿革在這篇AutoHotkey_L:支持unicode, 能?送中文的AutoHotkey分支有詳細的介紹,它的說明文件可由此處瀏覽。 […]

  21. sunwind 的头像

    XP系统下AHK_L发送中文,要关闭360的驱动防火墙! 屡试不爽。

  22. 约翰牛 的头像
    约翰牛

    看来不错啊,想试试看

  23. […] AutoHotkey_L 的继承地位,并改称原版本为 AutoHotkey Basic。参见a、b […]

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据