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

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

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

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

      具体见帮助.

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

  5. 我改用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版,为什么有在我的机器上就不行呢,求遇到此问题的高人解决之道,在此大谢!!

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

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

发表回复

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