合理使用AutoHotkey+StrokeIt


xbeta注:在追求操作快捷与自动化的路上,有3款软件不得不提:超小的快捷键神兵hoekey,超小的鼠标手势之王StrokeIt,此外还有更富扩展性的AutoHotkey。前二者长于调用,而后者则强于功能。将两类软件结合在一起,双剑合璧,会有何等效果呢?且看dyseat网友的做法!

下文转载自dyseat文章,xbeta略有修改。

《合理使用AutoHotKey+StrokeIt》

工作中总是有一些重复的动作要做。操作的次数多了,就想找点自动完成之类的东西。找来找去,选中了Autohotkey。虽然内存占用比hoekey大了一点点,不过功能比hoekey要多一些,可完成的动作也要多一些。相比之下,还是可以接受的。

我的Autohotkey的ini文件所有动作全是自己做成的,一般来说分两部分:输出字段、实现动作。

1. 输出字段:让AHK自动输出日期时间

工作中,经常会遇到需要输入当前系统时间的情况。你会怎么做呢?
① 数字键直接输入:这是最简洁的办法,但也是最低效的。
② 输入法:目前多数输入法都支持输入当前(或指定)日期,并支持不同格式。但对于同时使用多种输入法的朋友来说,要保持一致的体验,并非易事——比如,要输入当前日期,有的输入法要键入dqrq,有的则要键入date。笔者经常使用中英日3种输入法,根本就放弃了这一想法。
③ AutoHotkey输入:虽然要编写代码,但输出格式、触发方式可完全自定义,也超越了输入法的限制。代码如下:

代码示例1:按下 /dd ,输出 YYYY-MM-DD HH:MM:SS

::/dd::
d = %A_YYYY%-%A_MM%-%A_DD% %A_Hour%:%A_Min%:%A_Sec%
clipboard = %d%
Send ^v
return

代码示例2:按 /rs 输出 MMDD

::/rs::
d = %A_MM%%A_DD%
clipboard = %d%
Send ^v
return

2. AHK实现动作

目前为止,只写了一个,是用来控制becky的。因为工作都是用mail联系的,平均一天要收50+的mail。所以经常要打开、最小化becky。一天重复N次,虽然说不麻烦,也都只是鼠标点一下。不过要移动鼠标到特定的点进行点击,所以还是要浪费一些脑细胞的。所以写了这个东西,检查becky是否打开。如果没有就打开,如果打开就判断是否激活;如果没有就激活,如果已经激活就最小化。好像QQ的Ctrl+Alt+Z 功能一样,而且比那个功能还好。按一下出来,再按一下还能回去!方便啊!

代码如下:

^!#a::
IfWinNotExist, xxxxx – Becky!
;判断becky是否启动
Run,c:\SystemTools\Becky_jp\B2.exe
;没启动则启动becky
Else
{
IfWinActive, xxxxx – Becky!
;启动的话则判断becky窗口是否激活
WinMinimize,
;激活的话就最小化
Else
WinActivate,
;没激活的话就激活
}
return

3. 让 StrokeIt 调用 AHK

本来用上面这些就应该差不多了…….. 不过既然已经懒了就想更懒点…. 这个还是要点键盘的…..而有的时候如果手不在键盘上就要挪过来然后点然后在挪回去这个…… 对懒人来说是无法忍受的. 还好还好鼠标几乎是不离手的恩…..那当然是立刻想到用StrokeIt了.

其实StrokeIt本身也有一些不错的功能的不过毕竟还是有限的哪有AHK强大我现在的做法是能用StrokeIt本身功能的就用不能用的就写到AHK里然后用StrokeIt调用AHK的快捷键这样一来…..真的是方便啊…..

经过如下配置:
StrokeIt调用AHK

最终效果是:
– 鼠标右下一拉 becky显示 再右下一拉 becky隐藏
– 向右一拉 输出 MMDD
– 拉个D 输出 YYYY-MM-DD HH:MM:SS
– 向左下拉 当前窗口最小化
– 向右上拉 显示刚才最小化的那个窗口 (我是用他调用 Alt+Shift+Tab 来做到的)
– 还有一些….是定义在特定窗口里的…
而且这样用还有一个好处:想用鼠标调用就用鼠标调用,不想用鼠标调用,也可以直接用键盘调AHK。两边都不影响。(正文完)

附1:相关链接
AutoHotkey 0级入门教程:让重复工作一键完成
[鼠标手势StrokeIt]一鼠走天下-兼谈电脑操作的便捷性

附2:更新历史
2011-04-11:更新图片;解释输出日期为什么没用输入法。>


《“合理使用AutoHotkey+StrokeIt”》 有 30 条评论

    • 我不用strokeit。
      但类似需求,在 AutoHotkey 官方帮助中已提供了极好的例子。

      the mouse wheel can be made into an entire substitute for Alt-tab. With the following hotkeys in effect, clicking the middle button displays the menu and turning the wheel navigates through it:

      MButton::AltTabMenu
      WheelDown::AltTab
      WheelUp::ShiftAltTab

  1. 楼主用的是 Becky! ,我用的是 Thunderbird 。
    我也想那样鼠标划一下把 Thunderbird 调出来,但我是用一个扩展把 Thunderbird 最小化到托盘的,这样那个 AHK 语句还管用吗?

  2. 我说说我偏激的一点观点:
    鼠标存在的原因更多是对于普通用户 (不追求速度极致) 的方便, 本身是低效的, 使用鼠标手势的快速是更多相对于普通使用鼠标而不使用鼠标手势的用户而言的, 从这点上有点类似资源管理器中的右键菜单, 我们通常称呼为 “快捷菜单” 的东西 (使用这个的确比从菜单栏找到相应菜单快了).
    所以, 为了追求极致, 我不用鼠标手势, 不过我也用鼠标.
    对这方面曾仔细思考, 最后还是觉得符合自己的习惯为首要考量吧.

    • @amnesiac, 在多年以前 我也不用鼠标手势的…..在写这个文章之前 我连浏览器自带的都没用过 一直到现在 我都是关掉的…..只开着一个strokeit

      当时是因为那些动作实在太繁琐了……考虑了N多个方案之后 定下的这个组合….

      不知道您有没有更好的方法完成我上面的动作呢????

      • @dyseat,
        我前面说的话可能有点朦胧, 这里小结一下, 减少鼠标的使用是追求速度的极致之道 (不必要使用鼠标的时候不使用).
        由于环境, 习惯, 想法的不同, 我只简要说说我的实现方案, 主体由 AHK 实现, 适当时调用一些程序命令等. 对于上面鼠标手势实现的操作, 其中我需要的由热键实现.
        对于这个方案, 有两个明显的特点: 取代 Windows Shell, 重新实现自己的热键 (在必要时覆盖原来的热键, 如 Alt+F4 关闭窗口, 目前我的实现是 Win+C); 第二是这个方案的细节一直在调整中, 以后可能考虑把热键完全在字母键区实现. 除去学习成本, 调整习惯的难度等其他, 比起之前的操作习惯目前我对速度基本满意, 也感觉比较舒适的.

        • @amnesiac,

          首先呢 我同意你的说法 在某些情况 特别是文件管理方面 键盘操作确实是比鼠标操作要快….. 可在另一些时候 比如网络相关的一些 鼠标就要更方便一些

          我在其他的贴子里回了 在这个贴子没回 可能你没看到….我的需求的最开始部分的一定要有鼠标操作的….

          比如上着上着网 突然来了个mail….或是在网页里 点开一个页面 在输入框里输入当前的时间….或是新建一个mail 在其中的几个位置 比如title和mail的最后 输入当前的时间…等等 这类的…

          在某些情况 特别是输入项目很少 只有几个字的时候 键鼠结合基本是最好的.. 比如我完成上面几个需求的时候 实际上 在大多数情况下 当时我手里是拿着鼠标的…..我要先用鼠标左键点一下 决定光标的位置 然后再输出….那么我是手离开鼠标 到键盘打字 然后手再回到鼠标 还是直接鼠标左键点一下 光标移到需要的位置 然后划一个鼠标手势 就完事了 哪个比较方便呢????

          另外….我发现好多人都误解了我这个文章的意思…..都盯着后面的鼠标手势不放…..

          实际上 鼠标手势能做到的 比如日期输出 调出mail客户端 都是用键盘也能做到这些效果的… 只不过因为我的工作 更多的用到鼠标 我才又写了个鼠标手势来调用 如果不用鼠标 用键盘 一样能达到同样的目的….

          也就是 想用键盘就用键盘 想用鼠标就用鼠标…..这样才是最好的…..而不是 我就非要用键盘 或是非要用鼠标…..文章的最后一句

          我个人觉得 这个才是极致….可以有各种方法 快速的完成任务….而每种方法都适用于不同的情况….

      • @dyseat,
        多谢讨论, 看完你的回复, 我明白了你所说的极致并非速度的极致, 所以这话题就不继续了, 后面我列几个问题供参考, 也许可大致判断自己是否适合追求极致的速度:
        1. 你认为资源管理器中的右键快捷菜单确实方便快捷吗?
        2. 你觉得桌面 (包括任务栏, 托盘区, 开始菜单等区域) 的存在是使用系统必须的吗?
        3. 现在请你设计仅用键盘上的字母键区, 操作系统中的各种需要的功能, 你有哪些方案?

        • @amnesiac,

          我说的极致也是速度的极致 不过我的意思是 在某些情况下 全键盘好 有些情况全鼠标好 有些情况是键鼠结合好…..这个要看具体要做的是什么工作….

          至于你后面的问题 我个人觉得你有点想当然了….我上面举的我使用的鼠标的例子 也是上网的时候的例子 也不是平时操作的时候的…..我个人的工作电脑 比你想像的要简洁得多…

          我用TC用了好几年了 右键我是设置成选中模式的..不过我也得说 系统的右键菜单还是有些用处的 偶尔还是用得到的 所以我又给另设了一个快捷键 弹出右键菜单…

          至于桌面 我换成了bblean的 这个我使用的时间比TC都久 根本没有桌面图标的存在 关于你括号里面的问题 右下角的托盘图标还是有必要的…..

          至于你第3个问题…说实话 我挺讨厌小键盘区的….不伦不类….离左手太远 移动困难 离右手近 可是右手又要用鼠标…..不管那里做出什么功能…..代价都是两只手都要离开自己的常用区域….一般来说 常用这里的人 都是专业人士……对于没有什么特殊需求的人…..这片区域其实取消了也没什么关系….把功能设置到这里? 个人觉得不管是什么功能都很…..恩….不舒服…..除非是专业上用的

      • @dyseat,
        还是打住吧, 没必要继续讨论了, 不过愿意和你做个朋友 (amnesiac10+strokeit@hotmail.com), 我不再看这篇文章回复.
        记事本编辑器用多了的人, 偶然换个 notepad2, 会觉得相当强大高效了, 我非常理解. 不过, 如果这时和他们介绍高效强大的 VI 类编辑器, 多半被批的找不到自我.
        我所欣赏的是这文章有自己的思考, 实践, 并且别人有一定的借鉴价值, 不论怎样的观点, 有自己的思考最重要, 加上实践则较难得, 有借鉴的意义则我个人看算好文章, 为此感谢你, 同时也期待以后有更多的好文章.

  3. 日期这类字段
    我是用输入法的类似自定义短语的功能的
    感觉用鼠标手势太傻了

    因为大多用到日期这些文字的场合
    都伴随大量的上下文输入
    也就是键盘操作
    为了输入日期把手移到鼠标上
    做完手势再移回来
    既浪费了输入的时间
    也破坏了键盘输入的连贯性
    不利于快速操作

    所以鼠标手势、系统组合键以及特定环境的快捷键应该结合使用
    因地制宜,因时制宜

  4. 重复输入文字或者经常需要输入的文字就用输入法搞定了,比如:
    姓名:***
    电话:0315-37665**
    手机:1383155****
    E-Mail:*********@foxmail.com
    以上内容就可以自定义一个键位,方便输出,绝对提高效率。差点忘了, 我用的是极点五笔输入法。
    另外,启动程序也可以直接使用极点五笔输入法的命令直通车,比如启用word,我只需要在极点五笔输入法激活的状态下输入“WORD”四个字母,即可马上激活。
    如果网页需要加载后启动,如直接打开公司的页面,可以使用AltRun。
    现场用的比较多的几款软件就是:Everythign+TC+AltRun+Strokit。一直想研究下AutoHotKey,但是功底不行,有时间再说了。

    • @stainlist, 个人比较不习惯用输入法里的这种功能 虽然早就知道了…..不过因为我平时有中英日 3种输入….所以把输入定到一个输入法里…会比如麻烦…..来回的切换…..所以 AHK还是不错的 不管当前输入法是什么 都可用……

      可能就是需求不同吧……

    • @stainlist, 知音啊,我也一直用命令直通车,从极点有这个功能就用上了,好多年了,基本上不用Win+R了,启动程序什么的都快,并且把桌面图标都省了,呵呵,桌面干净多了,不过LZ的的做法也很有借鉴意义,各取所长啊

  5. 博主,这张图片无法显示,希望核对一下,谢谢。http://ddandyy.iteye.com/upload/picture/pic/6354/29ea1938-b369-4999-be93-e9896069c22b.png(让 StrokeIt 调用 AHK)

    xbeta注:多谢提醒。无法显示是因为外站图片设了防止盗链,现已上传到本站空间,应该解决了。

  6. 让 StrokeIt 调用 AHK,新建命令,运行程序:
    AutoHotkey命令行语法
    “E:Program FilesAutoHotkey_LwAutoHotkey.exe” “AHK 窗口信息工具.ahk” %*

回复 hzhbest 取消回复

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