用 AutoHotKey 改造 Windows

你对 Windows 最大的不满是什么?反正于我是,Windows 上的程序大多没有提供「命令行接口」,也就是说,对于机器不可读。

对人可读不就行了吗?!为什么还要要求机器可读?效率!效率!效率!如果没有「命令行接口」,就得人去做一些很低端(不涉及价值判断)、重复枯燥的操作。比如:抢课、抢票……各种刷网页、点点点的行为。再比如:在 Office 里面按下「 alt 键」进行的一系列快捷操作。

那有没有改造 Windows 程序的可能呢?呃~~要么,跟开发者联系,指望他们提供一组接口;要么,自己上手,在不涉及程序本身的情况下,去定制一套接口。AutoHotKey 就是这么一套「改造 Windows 程序」的工具。经它改造后,那些 Windows 程序相当于多了一套接口,但不是正统意义上的「命令行接口」,而是一组热键。

AutoHotKey 会模拟人的操作,去执行一连串预先设定好的动作。这样,就可以在无需触动程序本身的前提下,提供一套全新的、定制的接口。当然,弊端是效率肯定没有原生接口那么高。但对于日常应用,已经绰绰有余了。

第一个项目:刷网页

用 AutoHotKey 改造 Windows_第1张图片
需求

假设我们有这么个需求:

  1. 点击「按钮 1 」;
  2. 点击「按钮 2 」;
  3. 等待网页弹出框,按下「确定」;
  4. 等待网页加载,再按一遍「确定」;
  5. 重复 400 遍;

好吧,废话不多说,直接上代码:

第一版脚本

#c::
    click, 123, 456
    click, 123, 567
    send, {enter}
    send, {enter}
return

意思是:按下「 Windows 键」+「C」,会执行 2~5 行语句,即 ::return 之间的部分。

试一下,你会发现,然而并没有什么卵用。

第二版脚本

#c::
    click, 123, 456
    click, 123, 567
    sleep, 1000
    send, {enter}
    sleep, 1000
    send, {enter}
return

加了几句 sleep, 1000 ,意思是「眯一觉,这一觉长达 1 秒(即 1000 毫秒)」。

然而,我们想要的是自动重复 400 遍啊,而不是按 400 次「Win + C」。

第三版脚本

#c::
    loop, 400 {
        click, 123, 456
        click, 123, 567
        sleep, 1000
        send, {enter}
        sleep, 1000
        send, {enter}
    }
return

第四版脚本

#c::
    loop, 400 {
        click, 123, 456
        click, 123, 567
        SetKeyDelay, 1000
        send, {enter}{enter}
    }
return

SetKeyDelay, 1000 意思是:后面的按键都隔上 1 秒。

第五版脚本

如果现在不光是批量重复,而且要每次填入一句话(每句话都不太一样),又该如何做呢?我们可以把要填入的字段事先写到一个文本当中(假设叫 keyword.txt)。然后逐行读取,再进行操作。

#c::
    loop {
        FileReadLine, line, ./keyword.txt, %A_Index%
        ...
    }
return

用滚轮控制数值增减

!WheelUp::
    send, {Up}
return

!WheelDown::
    send, {Down}
return

如何系统地学习 AutoHotKey ?

……


对了,AutoHotKey 有一个致命的缺陷:运行脚本的时候,你啥事也干不了‍♂️

你可能感兴趣的:(用 AutoHotKey 改造 Windows)