AutoHotKey简单入门

news2024/9/27 19:16:05

简单入门

快捷键

^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:会弹出类似下方图片的窗口,显示你设置的字符串

image-20201218140235259

:*:ace::access

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

调用多个功能

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

^j::
    MsgBox Wow!
    MsgBox this is
    Run, 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,就会看到如下页面

image-20201218144326812

关闭后序热键和热字串的上下文敏感性
#IfWinActive new 1 - Notepad++
#space::
    MsgBox You pressed Win+Spacebar in Notepad++
Return

; 任何其他的窗口
#IfWinActive
#space::
    MsgBox, You pressed Win+Spacebar not in Notepad
Return

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

image-20201218144626304

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

#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 方法操作多个指定值的操作.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/487425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音营销策略:新手如何利用抖音提高品牌曝光度

随着短规频平台的兴起&#xff0c;抖音作为其中的校佼者&#xff0c;已经成为了众多用户和企业的营销利器。但是&#xff0c;对于抖音新手而言&#xff0c;如何在这个平台上快速提升影响力呢?下面不若与众就为大家分享几个实用的方法。 一、关注抖音热门话题和潮流 抖音平台上…

力扣题库刷题笔记581-最短无序连续子数组

1、题目如下&#xff1a; 2、题解代码实现&#xff1a; 浅看题解&#xff0c;解题思路和本人接替思路一毛一样&#xff0c;奈何没有想到用双指针&#xff0c;在代码实现上也存在问题。当知道用双指针的时候&#xff0c;本题也变得相对简单。思路如下&#xff1a; a、输入仅存在…

Vue条件渲染v-if和v-show

条件渲染v-if和v-show <div id"root"><!-- <div v-if"true">v-if</div>--> <!-- <div v-show"true">v-show</div>--> n:{{n}}<button click"n">点击n</button><div v…

法规标准-UN R152标准解读

UN R152是做什么的&#xff1f; UN R152 全名为关于M1和N1型机动车高级紧急制动系统&#xff08;AEBS&#xff09;型式认证的统一规定&#xff0c;是联合国对于M1和N1型车辆AEBS系统认证的要求说明&#xff0c;当满足其要求内容时&#xff0c;才可通过联合国的认证&#xff0c…

数字化转型导师坚鹏:面向数字化转型的大数据顶层设计实践

面向数字化转型的大数据顶层设计实践 课程背景&#xff1a; 数字化背景下&#xff0c;很多企业存在以下问题&#xff1a; 不清楚大数据思维如何建立&#xff1f; 不清楚企业大数据分析方法&#xff1f; 不了解大数据应用成功案例&#xff1f; 课程特色&#xff1a; …

(转载)01.Matplotlib 图像结构-figure()axes设置

​概要&#xff1a;介绍matplotlib 绘制图像起手&#xff0c; figure() 的设置&#xff0c; axes() 的设置。主要的内容可移步最后部分的总结。 04 Matplotlib 总结 Matplotlib 提供了matplotlib.figure图形类模块&#xff0c;它包含了创建图形对象的方法。通过调用 pyplot 模…

Hive3面试基础

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、基本知识Hive31.表的类型和表的存储格式a)b)c)创建表i&#xff09;ii&#xff09; 2.表 二、使用步骤1.引入库2.读入数据 总结 前言 面试准备之Hive 回顾…

个人代码管理

项目描述&#xff1a; 在公司使用软件大家会经常使用GitLab进行代码管理&#xff0c;但是GitLab对于个人使用会有&#xff0c;操作相对复杂&#xff0c;且需要收费。GitHub的代码又都是开放的。经过上网查找和尝试&#xff0c;找到了一个可以日常用来保存自己代码的工具。&…

吴恩达和OpenAI的《面向开发者的ChatGPT提示工程》精华笔记

《ChatGPT Prompt Engineering for Developers》 面向开发者的ChatGPT提示工程 shadow 趁着假期&#xff0c;学习了prompt课程&#xff0c;做了一些精简和关键知识点的梳理&#xff0c;分享给大家。 LLM 可完成的任务 包括: 总结&#xff08;如总结用户评论&#xff09; 推断&a…

streamlit+pywebview,纯python以前后端形式写桌面应用

1、VSCode VSCode VSCode扩展&#xff1a;Python 2、配置PowerShell执行策略 以管理员身份运行PowerShell&#xff0c;运行Set-ExecutionPolicy RemoteSigned&#xff0c;并输入Y&#xff0c;回车确认 3、配置Python环境 只安装Python&#xff1a;华为镜像、阿里镜像、new…

DC-DC直流隔离升压高压输出电源模块12v24v48v转50V110V200V250V350V400V500V600V800V1000V微功率

特点 效率高达 80%以上1*2英寸标准封装单电压输出价格低稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRB W2~40W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36V、…

Android 编译模块 (小记)

1.整编 source build/envbuild.sh lunch xxx make 2.单独编译模块 2.1 去Android.bp 中找模块名 比如我想编译system/core/fastboot&#xff0c;那么我就去找这个路径下的Android.bp/ Android.mk Android.bp 中找每个模块的那么就行 然后直接make这个name make fastboot_…

通过【Stable-Diffusion WEBUI】复刻属于你的女神:再谈模型与参数

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;复刻优秀的作品&#xff08;1.1&#xff09;模型&#xff08;1.1.1&#xff09;Model Hash &#xff08;1.2&#xff09;提示词&#xff08;1.2.1&#xff09;反推提示词 &#xff08;1.3&#xff09;参数 &…

GaussDB数据库基础函数介绍-上

目录 一、函数在数据库中的作用 二、GaussDB常用基础函数介绍与示例 1、数字操作函数 2、时间和日期处理函数 3、类型转换函数 4、数组函数 5、范围函数 6、窗口函数 7、聚集函数 8、安全函数 9、系统信息函数 10、动态脱敏函数. Tip&#xff1a;由于篇幅缘故&…

shell脚本的条件判断式

文章目录 shell脚本的条件判断式利用 if...then单层、简单条件判断式多重、复杂条件判断式例题1例题2 利用case...esac判断例题1 利用function功能例题1 shell脚本的条件判断式 很多时候我们必须要根据某些数来判断程序该如何举例来说&#xff0c;我们在之前的练习中让用户输入…

jsp网上拍卖管理系统统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 jsp网上拍卖管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&a…

AWS Lambda - 第一部分

Hello大家好&#xff0c;我们今天开始讨论AWS Lambda的内容。 SAP认证考试会涉及到很多Lambda的内容&#xff0c;想要通过认证考试虽然不一定非要精通开发&#xff0c;但需要知道Lambda的一些功能和特性、适用场景以及Lambda是如何工作的。 我们开始吧&#xff01; Lambda与…

数据结构刷题(三十):96不同的二叉搜索树、01背包问题理论、416分割等和子集

一、96. 不同的二叉搜索树 1.这个题比较难想递推公式&#xff0c; dp[3]&#xff0c;就是元素1为头结点搜索树的数量 元素2为头结点BFS的数量 元素3为头结点BFS的数量 元素1为头结点搜索树的数量 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量 元素2为头结…

AWS Lambda - 第二部分

Hello大家好&#xff0c;我们今天继续讨论AWS Lambda的内容。 Lambda的网络 首先&#xff0c;我们来讨论一下Lambda的网络&#xff0c;联网相关的内容。 在部署Lambda时&#xff0c;在默认情况下&#xff0c;Lambda函数是部署和运行在AWS的一个安全的VPC中&#xff0c;是在您…

“大运”有我丨智安网络护航大运,荣获成都市公安局感谢信!

近日&#xff0c;深圳市智安网络有限公司四川分公司&#xff08;以下简称“智安网络”&#xff09;荣幸受邀参与第31届世界大学生夏季运动会网络安全检查工作&#xff0c;对中和体育中心场馆安全漏洞检测进行现场技术支撑。 智安网络对此次网络安全检查工作高度重视&#xff0…