简单入门

快捷键

^j::Send, Hello world!
Return

^j::代表Ctrl+J,其中^代表Ctrl

Send命令:在光标处输入Hello world!

也就是说,你按下Ctrl+J后,将会输入字符串Hello world!

Return即返回

热字串

::ftw::Free the whales
Return

功能:文本替换,即你输入ftw后,按下触发按键(SpaceEnterTab)后,就会把ftw替换成Free the whales

::ftw::MsgBox, You typed "ftw"
Return

功能:你输入ftw后,按下触发按键(SpaceEnterTab)后,就会调用MsgBox命令

MsgBox:会弹出类似下方图片的窗口,显示你设置的字符串

:*:ace::access

功能:无需按下触发按键就可替换字符,即你输入ace的时候,自动会替换成access

调用多个功能

每个热键和热字串后都能接多个功能

^j::MsgBox Wow!MsgBox this isRun, Notepad.exe
Return

Run:运行

常用符号
符号 描述
# Win(Windows 徽标键)
! Alt
^ Control
+ Shift
& 用于连接两个按键(含鼠标按键) 合并成一个自定义热键.

特定窗口的热键和热字串

可使用#IfWinActive#IfWinExist等特殊命令创建对上下文敏感的热键和热字串

#IfWinActive new 1 - Notepad++
#space::MsgBox You pressed Win+Spacebar in Notepad++
Return

只在窗口new 1 - Notepad++中生效,按下Win键和Space,就会看到如下页面

关闭后序热键和热字串的上下文敏感性
#IfWinActive new 1 - Notepad++
#space::MsgBox You pressed Win+Spacebar in Notepad++
Return; 任何其他的窗口
#IfWinActive
#space::MsgBox, You pressed Win+Spacebar not in Notepad
Return

在其他窗口输入热键的结果

一个文件包含多个热键和热字串

#i::
Run, https://www.google.com/
Return~j::
Send, ack
Return:*:acheiv::achiev
::ace::achievement

发送指令Send

符号 说明
按下Alt
+ 按下Shift
^ 按下Ctrl
# 按下Win

使用 CtrlEnter(或其他按键) 作为热键时, 不要将它们括在 {} 中.

; 错误的
{LCtrl}::Send, AutoHotkey
Return; 正确的
LCtrl::Send, AutoHotkey
Return

想要表示按住或松开某个按键, 可以将这个键用花括号围起来, 同时加上单词 UP 或 DOWN.

; 下面这个例子表示按下一个键的时候再按下另一个键(或多个键).
; 如果其中一个方法不奏效, 试试另一个.
Send, ^s                     ; 都表示发送 CTRL+s 键击
Send, {ctrl down}s{ctrl up}  ; 都表示发送 CTRL+s 键击
Send, {ctrl down}c{ctrl up}
Send, {b down}{b up}
Send, {Tab down}{Tab up}
Send, {Up down}  ; 按下向上键.
Sleep, 1000      ; 保持 1 秒.
Send, {Up up}    ; 然后松开向上键.

发送复杂文本

Send,
(
Line 1
Line 2
Apples are a fruit.
)

打开指令run

; 运行一个程序. 注意: 大部分的程序可能需要完整路径.
Run, %A_ProgramFiles%\Some_Program\Program.exe; 打开一个网址
Run, https://autohotkey.com

命令和函数

命令

使用参数时, 你需要在参数的前后加上 %, 比如 %variable%. 而文本和数字则不需要加双引号, 例如 This is some text. 命令的参数不能进行运算

函数:

可以使用运算,变量不需要加上百分号,函数可以嵌套另一个函数,文本前后需要加上双引号

SubStr(37 * 12, 1, 2)
SubStr(A_Hour - 12, 2)
MyVar := SubStr("I'm scripting, awesome!", 16) ;使用:=来接收返回值
代码块

用一对花括号({}) 包围起来的一段代码

if (MyVar=5)
{MsgBox, MyVar equals %MyVar%!!ExitApp
}

赋值

传统赋值=,表达式赋值:=

获取用户输入

InputBox, OutputVar, Question 1, What's you name
if(OutputVar = "bill"){MsgBox, That's an awesome name, %OutputVar%
}else{MsgBox, Hello world!
}
; 下面的例子展示了什么时候该使用百分号, 什么时候不该.
Var = Text  ; 赋值一些文本给一个变量(传统的).
Number := 6  ; 赋值一个数字给一个变量(表达式).
Var2 = %Var%  ; 赋值一个变量给另一个(传统的).
Var3 := Var  ; 赋值一个变量给另一个(表达式).
Var4 .= Var  ; 追加一个变量到另一个的末尾(表达式).
Var5 += Number  ; 将变量的值与另一个相加(表达式).
Var5 -= Number  ; 将变量的值减去另一个(表达式).
Var6 := SubStr(Var, 2, 2)  ; 变量在函数中. 这总是一个表达式.
Var7 = %Var% Text  ; 赋值一个变量给另一个变量并带有一些额外的文本(传统的).
Var8 := Var " Text"  ; 赋值一个变量给另一个变量并带有一些额外的文本(表达式).
MsgBox, %Var%  ; 变量在命令中.
StringSplit, Var, Var, x  ; 在命令中的变量, 但是它们作为输入或输出变量.
if (Number = 6)  ; 只要 IF 有括号, 它就是一个表达式, 所以不需要百分号.
if (Var != Number)  ; 只要 IF 有括号, 它就是一个表达式, 所以不需要百分号.
if Number = 6  ; 如果没有括号, 那么 IF 是传统的. 不过, 只有赋值语句"右边"的变量需要百分号.
if Var1 < %Var2%  ; 如果没有括号, 那么 IF 是传统的. 不过, 只有赋值语句"右边"的变量需要百分号.

对象

我们有很多方法可以创建对象, 下面介绍最常用的几种方法:

  • 方括号语法

    MyObject := ["one", "two", "three", 17]这将从有时被称为"索引数组"的内容开始. 索引数组是一个表示项目列表的对象, 索引号从 1 开始连续递增. 在本例中, 值 "one" 存储在对象键 1(又叫做索引号1), 值 17 存储在对象键 4(又叫做索引号 4).

  • 大括号语法

    Banana := {"Color": "Yellow", "Taste": "Delicious", "Price": 3}这将通过定义有时被称为"关联数组"来开始. 关联数组是数据的集合, 其中每个条目都有自己的名称. 在这个例子中, 值 "Yellow" 存储在对象键 "Color" 中. 同样的, 值 3 存储在对象键 "Price" 中.

  • 数组函数

    MyObject := Array("one", "two", "three", 17)这种方式跟方括号语法形式一样, 区别仅仅是采用了函数的形式.

  • 对象函数

    Banana := Object("Color", "Yellow", "Taste", "Delicious", "Price", 3)这种方式跟大括号语法形式一样, 区别仅仅是采用了函数的形式.

请注意, 所有这些方法都创建了同一样东西(也就是对象), 区别仅仅是对象的键不一样.

使用对象
  • 方括号表示法

    Banana["Pickled"] := True在对象中设置值跟设置变量的值一样简单. 你需要做的是把方括号所代表的值在表达式赋值运算符 := 的左边.

  • 句点表示法

    Banana.Consistency := "Mushy"和上面一样, 但是用点(.) 符号.

检索值:
  • 方括号表示法

    Value := Banana["Color"]S↓这允许你使用表达式作为键从对象中获取值. 在这个例子中, 我使用表达式 "Color", 不要惊讶我仅使用键 Color 就会得到一个包含单词 “Yellow” 的值, 因为我们事先(在上一节) 就设置了键 Color.

  • 句点表示法

    Value := Banana.ColorS↓仅允许使用原样的字串作为键名. 在句点表示法中键名不能使用变量.

增加新的键和值:
  • 方括号表示法

    MyObject["NewerKey"] := 3.1415S↓想要直接添加一对键和值, 只需设置一个尚不存在的键即可.

  • 句点表示法

    MyObject.NewKey := "Shiny"S↓和上面一样, 但是用点符号.

  • InsertAt(在…插入) 法

    MyObject.InsertAt(Index, Value1, Value2, Value3...)Index(索引) 为任意整数键. 这会将所有更高的整数键的索引向上移动插入值的数量, 即使是空缺的也一样(例如, 假设只有键 1 和 100 存在, 当插入一个值到第 50 个键的位置时, 将导致原来位于 100 的键的索引变成 101).

  • Push(推送) 法

    MyObject.Push(Value1, Value2, Value3...)S↓"追加" 值到数组 MyObject 的尾部. 换句话说, 它将插入的值放在 最高整数键 + 1 的位置.

移除键和值:
  • 用空白填充值

    Banana.Consistency := ""最简单的删除值的方法就是用空白填充. 你可以将其赋值为 “”(两个连续的双引号), 也就是常说的 空字符串. 这不会删除键, 但是它将使值看起来与从未赋值一样. 可以通过使用 HasKey 方法得知键依然存在, 而且键也会出现在 For 循环中. (我们一会再解释 For 循环)

  • 删除法

    RemovedValue := MyObject.Delete(AnyKey)S↓这和接下来的方法将删除键 值. MyObject[AnyKey] 先前的值将存储在 RemovedValue 中.NumberOfRemovedKeys := MyObject.Delete(FirstKey, LastKey)允许你删除 FirstKeyLastKey 之间的一系列的编号/整数或字符串键. 它给出的值将是被删除的键的数量, 如果你的键之间有间隙, 这是有用的(例如你指定键从 1 到 4, 但是键 2 不存在, 这将设置 NumberOfRemovedKeys 为 3, 因为只有三个键被移除).

  • Pop(抛出) 法

    MyObject.Pop()这将删除最高的整数键, 并返回这个键对应的值. 而且这种形式不会影响其他键的索引顺序(因为没有比它更高的序列了).

  • RemoveAt(在…删除) 方法

    RemovedValue := MyObject.RemoveAt(Index)

    NumberOfRemovedKeys := MyObject.RemoveAt(Index, Length)这将移除从 IndexIndex + Length - 1(包含) 之间的所有键(例如 Index 为 5, Length 为 3, 则将删除键 5, 6, 7 这三个键). 如果 Length 省略则默认为 1. 移除这些键之后, 更高数字或整数的键将向下填充空缺, 所以如果有个值位于 Index + Length 那么它现在的位置就是 Index. 这很像 InsertAt 方法操作多个指定值的操作.

AutoHotKey简单入门相关推荐

  1. BizTalk 2006 简单入门示例程序(附源项目文件下载)

    BizTalk 2006 简单入门示例程序(附源项目文件下载) 为初学BizTalk Server 2006的开发人员,提供一个简单入门的示例程序,包括一个Receive Port.Send Port ...

  2. python如何读取mat文件可视化_python Matplotlib数据可视化(1):简单入门

    1 matplot入门指南 matplotlib是Python科学计算中使用最多的一个可视化库,功能丰富,提供了非常多的可视化方案,基本能够满足各种场景下的数据可视化需求.但功能丰富从另一方面来说也意 ...

  3. ARM NEON 编程简单入门1

    原文:http://blog.csdn.net/silentob/article/details/72954618  ARM NEON 编程简单入门1 NEON简介 NEON是适用于ARM Corte ...

  4. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

  5. EChart.js 简单入门

    EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart   这个是Visual Studio里的自带控件,使用比 ...

  6. 【我的区块链之路】- Hyperledger fabric的简单入门(四)链码的编写及调试

    [我的区块链之路]- Hyperledger fabric的简单入门(四)链码的编写及调试       之前的文章中我们有讲过了fabric的一些核心的配置文件的选项说明,讲过fabric 的网络启动 ...

  7. 基于vue-cli、elementUI的Vue超简单入门小例子

    基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...

  8. 【java开发系列】—— spring简单入门示例

    回顾 1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控 ...

  9. JAVA Bean和XML之间的相互转换 - XStream简单入门

    JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...

最新文章

  1. SaltStack入门(二)Grains、NoteGroup和State
  2. [LeetCode] Single Number 单独的数字
  3. 推荐一波腾讯专家的技术书单,请收下!
  4. 网络技术术语英汉对照
  5. mysql cmake错误_MySQL5.5安装出现CMake错误找不到CMakelists.txt原因-阿里云开发者社区...
  6. 分拣外观残缺的机器人_复合机器人AGV+协作机器人的应用领域
  7. CH2401 送礼物 双向搜索
  8. 移动端车牌识别(前端识别、后端识别)的区别分析
  9. linux 编译mtk无线驱动,Linux驱动(七)----MTK驱动注册分析
  10. 手机自动签到简易应用
  11. Qt 打印文档(PDF)
  12. 计算机的语言栏怎么更改,win7电脑语言栏不见了如何修复
  13. 数据湖和数据仓库的区别是什么?
  14. Java14它真的来了, 真是尾气都吃不到了
  15. HTML/CSS+JavaScript+jQuery
  16. 通过Eclipse创建一个Project ,Java Project 和Tomcat Project 生成的目录和文件
  17. 研发过程管理与质量控制
  18. 对话“1024程序员节”嘉宾 ——RT-Thread 创始人熊谱翔
  19. 讯飞星火大模型V1.5发布 刘庆峰:我们要追赶OpenAI
  20. paypal卖家如何收款?

热门文章

  1. python杨辉三角函数_python杨辉三角输出指定行_使用python打印十行杨辉三角过程详解...
  2. RAID磁盘阵列是什么
  3. word查找参考文献引用格式
  4. python关于类块BASE64问题
  5. 一、搜索引擎篇-揭开es神秘的面纱
  6. 请问一下我这里显示非法字符是哪里出问题哎
  7. 感恩节跟进技巧(附邮件模板)
  8. 机器学习(五)贝叶斯分类器之估算收入阶层
  9. matlab画图RGB调色
  10. Fiddler抓包1-查看get与post请求