创建或修改目录:/www/wwwroot/104.219.215.234/data 失败!
发布日期:2024-10-30 19:44 点击次数:83
在咱们运行旅程之前清纯诱惑, 请允许我提些建议. 在本向导中, 你会看到大批的翰墨和代码. 为了更有用的学习, 建议你阅读这些翰墨并 尝试运行这些代码. 然后再潜入学习这些代码. 你可以复制并粘贴此页上的大多数示例. 若是你弄浑沌了, 试着再看一遍.
a. 下载并装配 AutoHotkey若是你是在腹地检察此文档, 你可能也曾装配了 AutoHotkey 何况可以跳转到 b 部分.
在学习使用 AutoHotkey(AHK) 之前, 你需要下载它. 下载后, 你可能会需要装配它. 但这取决于你下载的版块. 对于本指南, 咱们将使用装配版, 因为对于生手来说, 它最容易开发.
翰墨指导:
访谒 AutoHotkey 主页: https://autohotkey.com/ 点击下载: https://autohotkey.com/download/ahk-install.exe 在装配 Autohotkey 经由中, 需要你聘请装配 UNICODE 或者 ANSI 版块. 你很可能需要 UNICODE 版块, 浅薄点说, 若是你思要它守旧非英翰墨符和数字, 那就聘请 UNICODE 版. 版块聘请之后, 一直点下一步直到你看到装配(Install) 按钮. 装结束? 棒极了! 咱们接着往下看.视频指导, 请在 YouTube(可能您无法翻开) 网站不雅看 Install and Hello World
b. 如何创建一个剧本Autohotkey 装配完成后, 你也许会思它能作念些什么. AutoHotkey 不是魔法, 天然咱们齐但愿它是. 是以需要咱们告诉它要去干什么. 而这个经由叫作念 "写剧本".
翰墨指导:
右键点桌面空缺处. 点击 "新建" 菜单. 点击内部的 "AutoHotkey Script" 新建一个剧本. 给剧本定名. 备注: 文献名必须带 .ahk 后缀, 举例 MyScript.ahk 找到刚刚新建的剧本并右键点击它. 点击 "Edit Script". 一个新窗口被弹出, 也许是记事本. 若是是这样就胜仗了!当今你也曾创建了一个剧本, 咱们需要加点内容到剧本中. 若是需要用到内置号令, 函数和变量, 请检察第 5 节.
这是一个使用 Send 号令创建的一个包含热键的浅薄剧本, 当你按下热键后, 它会向窗口发送一段翰墨.
^j:: Send, My First Script Return
稍后咱们将进行更潜入的连系. 在此之前, 咱们先阐扬一下上头的代码:
第一转: ^j:: 是热键. ^ 代表 Ctrl, j 是字母 J. 任安在 :: 左边的字符默示您需要按下的热键. 第二行: Send, My First Script 默示如何发送按键. Send 是号令, 任安在逗号(,) 之后的内容将会被键入. 第三行: Return. Return 将会成为你最佳的一又友. 从字面上看, 它将 罢手 代码不竭往下. 当你的剧本包含越来越多的东西时, 使用 Return 会幸免好多问题. 保存文献. 双击桌面上的文献来运行它, 翻开记事本或者其他可以输入翰墨的处所然后按下 Ctrl 和 J. 太好了! 你的第一个剧本完成了. 给我方一些奖励, 然后复返阅读本教程的其余部分.视频指导, 请在 YouTube 网站不雅看 Install and Hello World.
c. 不要合并号令当你在写代码的时候, 你可能有历害的冲动思在兼并转放下几个号令, 或者在一个号令中嵌套多个号令, 千万不要这样作念. 在第 5 节咱们将会告诉你为什么不要这样作念, 同期, 咱们还将告诉你应该若何作念.
d. 如安在你的电脑上找到匡助文献有几种门径可以作念到这少许, 假定你已将 AutoHotkey 装配到默许位置:
有策动 1:
找到并点击屏幕上的运行按钮, 庸碌在左下角. 如有必要, 点击 总共要道(畴昔的 "总共要道"). 在列表中查找 AutoHotkey. 你会看到 AutoHotkey Help File. 点击它. 完成!有策动 2:
翻开资源管制器, 举例右键单击 "运行" 按钮. 在左窗格中找到 此电脑(畴昔称为我的电脑或筹备机). 点击它. 参加装配 AutoHotkey 的硬盘. 可能是 C:\ 盘. 在 Program Files 文献夹里找到 AutoHotkey. 查找 AutoHotkey.chm 或者找一个名叫 Autohotkey 并带有黄色问号图主义文献. 完成! 2 - 快捷键 & 热字串什么是热键? 热键是一个发烧的按键, 开个打趣. 热键是用来触发某些动作的按键或组合按键. 举例:
^j:: Send, My First Script Return
什么是热字串? 当你键入它们时, 热字串主要用于膨胀缩写(自动替换). 天然, 它也可以用来启动任何剧本动作. 举例:
::ftw::Free the whales
这两个例子的区别在于, 当你按下 Ctrl+J 时, 热键将会触发, 而热字串会将你输入的 "ftw" 调节为 "Free the whales".
"那么, 该如何创建一个热键?" 好问题. 热键是通过一双 :: 创建的. 按键名或组合按键名必须在 :: 左边. 代码则跟鄙人面, 然后以 Return 收尾.
防范: 天然也有例外情况, 但好多时候容易引起散乱词语, 是以在向导页中不会触及到它, 至少不是当今.
esc:: MsgBox Escape!!!! Return
热字串在要触发文本替换的文本双方各有一双冒号(::). 而替代键入文本的文本在第二对冒号 :: 的 右边.
如上所述, 热字串也可以启动剧本动作. 和热键一样聪颖好多事, 真棒!
::btw:: MsgBox You typed "btw". Return
有一个好音信是: 你可以为每一个热键, 热字串, 标签等写上多行的代码.
^j:: MsgBox Wow! MsgBox this is Run, Notepad.exe Winactivate, Untitled - Notepad ; 无标题 - 记事本 WinWaitActive, Untitled - Notepad ; 无标题 - 记事本 Send, 7 lines{!}{enter} SendInput, inside the ctrl{+}j hotkey Returna. 键和其深奥标记
你可能会问"我若何知谈 ^ 代表 Ctrl?!". 好问题! 为了匡助你学习 ^ 和其他标记的理由, 防范看这个表:
标记 刻画 # Win(Windows 徽标键) ! Alt ^ Ctrl + Shift & 用于联结两个按键(含鼠标按键) 合并成一个自界说热键.(完好的标记列表, 请检察热键页面)
此外, 对于总共/大多数能用于热键双冒号 左边的热键称号, 请参阅按键列表.
你可以通过在两个按键(除了适度器按键) 之间, 使用 & 来界说一个组合热键. 鄙人面的例子中, 你要按下 Numpad0, 再按下 Numpad1 或 Numpad2, 才能触发烧键:
Numpad0 & Numpad1:: MsgBox You pressed Numpad1 while holding down Numpad0. Return Numpad0 & Numpad2:: Run Notepad Return
若是你思知谈热字串是否和热键一样有很酷的修饰符, 谜底是有! 热字串的修饰符在第一双 :: 之间, 举例:
:*:ftw::Free the whales
思要检察更多对于热键和热字串修饰符的信息和实例, 请访谒: 热键和热字串.
b. 窗口特定的热键/热字串只怕候你也许思要热键或热字串只在某些特定窗口上职责(或禁用). 要作念到这少许, 您需要使用其中的淘气一个 "高档" 号令, 在它们前边带有一个 #:
#IfWinActive #IfWinExist
这些特殊的号令(期间上称为 "教导") 可以创建对凹凸文敏锐的热键和热字串. 只需指定一个窗口标题. 但在某些情况下, 你可能需要指定一个窗口句柄, 组或类. 若是思潜入了解这些高档内容, 点这里: WinTitle 参数 & 最近找到的窗口.
#IfWinActive Untitled - Notepad ; 无标题 - 记事本 #space:: MsgBox You pressed Win+Spacebar in Notepad. Return
要关闭后续热键或热字串的凹凸文敏锐性, 请指定淘气 #IfWin 教导, 但将其总共参数留空. 举例:
; 无标题 - 记事本 #IfWinActive Untitled - Notepad !q:: MsgBox, You pressed Alt+Q in Notepad. Return ; 任何不是无标题 - 记事本的窗口 #IfWinActive !q:: MsgBox, You pressed Alt+Q in any window. Return
当 #ifwin 教导在剧本中从未使用, 总共的热键和热字串对总共窗口奏效.
#IfWin 教导是与位置关联的: 它们将影响剧本中的位于他们之间总共热键和热字串. 它们也互相抛弃的; 也即是说, 唯有最近的一个会有用.
; 记事本 #IfWinActive ahk_class Notepad #space:: MsgBox, You pressed Win+Spacebar in Notepad. Return ::msg::You typed msg in Notepad ; 绘制 #IfWinActive Untitled - Paint ; 无标题 - 绘制 #space:: MsgBox, You pressed Win+Spacebar in MSPaint! Return ::msg::You typed msg in MSPaint!
思要了解更多信息以及相似的号令, 请检察: #IfWinActive 页面.
c. 一个文献包含多个热键/热字串这是一些东谈主的思法. 因此, 我在这里声明一下: AutoHotkey 有才气将 淘气多 的热键和热字串放在一个文献中. 无论是 1 个, 如故 3253 个(或者更多).
#i:: Run, https://www.google.com/ Return ^p:: Run, notepad.exe Return ~j:: Send, ack Return :*:acheiv::achiev ::achievment::achievement ::acquaintence::acquaintance :*:adquir::acquir ::aquisition::acquisition :*:agravat::aggravat :*:allign::align ::ameria::America
上头的代码是填塞可以采纳的. 多个热键, 多个热字串, 齐包含在一个大的剧本文献里.
d. 示例::btw::By the way ; 替换 "btw" 为 "By the way", 当你按下默许的隔断符的时候.
:*:btw::By the way ; 替换 "btw" 为 "By the way" 而不需要按下隔断符.
^n:: ; Ctrl+N 热键. Run, notepad.exe ; 当你按下 Ctrl+N, 将启动记事本. Return ; 热键内容收尾. 当按下热键时, 底下的代码不会被实行.
^b:: ; Ctrl+B 热键 Send, {ctrl down}c{ctrl up} ; 复制采选的文本. 也可以使用 ^c, 但这种门径愈加可靠. SendInput, [b]{ctrl down}v{ctrl up}[/b] ; 粘贴所复制的文本, 并在文本前后加上加粗标签. Return ; 热键内容收尾, 这之后的内容将不会触发.3 - 发送按键
当今你决定发送(输入) 一些按键到一个要道中. 你可以使用 Send 号令. 该号令默示发送按键, 模拟打字或按键操作.
但是在咱们准备使用 Send 之前, 还有一些常见问题要防范.
就像热键一样, Send 号令也有一些特殊的键. 这里列出 4 个最常见的特殊按键:
标记 刻画 ! 发送 Alt. 举例, Send This is text!a 将发送按键序列 "This is text" 并接着按下 Alt+A. 防范: !A 在某些要道中产生的恶果与 !a 不同. 这是因为 !A 默示按下 Alt+Shift+A 而 !a 默示按下 Alt+A. 若是不笃定, 请使用小写字母. + 发送 Shift. 举例, Send +abC 会发送文本 "AbC", 而 Send !+a 会按下 Alt+Shift+A. ^ 发送 Ctrl(Ctrl) 键. 举例, Send ^!a 会按下 Ctrl+Alt+A, 而 Send ^{Home} 则发送 Ctrl+Home. 防范: ^A 在某些要道中产生的恶果与 ^a 不同. 这是因为 ^A 默示按下 Ctrl+Shift+A 而 ^a 默示按下 Ctrl+A. 若是不笃定, 请使用小写字母. # 发送 Win (带有 Windows logo 的按键), 因此 Send #e 会在按住 Win 时按下字母 "e".Send 页面中有个很大的表格展示了 AHK 内置的简直总共特殊键. 请点击检察. 举例: {Enter} 和 {Space}.
警告: 这个表 不 适用于热键. 也即是说, 当你使用 Ctrl 或 Enter(或其他按键) 作为热键时, 不要将它们括在 {} 中.
一个例子贯通了不应该对热键作念的景象:
; 当你创建热键时... ; 纰谬的 {LCtrl}:: Send, AutoHotkey Return ; 正确的 LCtrl:: Send, AutoHotkey Return
好多东谈主齐有一个共同的问题, 他们认为花括号(大括号) 放在文档中只是是为了好玩. 而本色上 花括号是需要的. 它将告诉 AutoHotkey {!} 默示 "惊叹号", 而不是要 "按下 Alt". 是以要仔细检察 Send 页上的特殊键表格清纯诱惑, 确保在合乎的处所加上大括号. 举例:
Send, This text has been typed{!} ; 防范 {} 中的 !(惊叹号)? 这是因为, 若是莫得 {}, AHK 将按下 Alt 键.
; 跟上头的例子雷同, 只是此次是 Enter 键. AHK 将会输出 "Enter" ; 若是 Enter 莫得加上 {} 的话. Send, Multiple Enter lines have Enter been sent. ; 纰谬 Send, Multiple{Enter}lines have{Enter}been sent. ; 正确
另一个常见的纰谬是, 东谈主们认为当使用 Send 号令时, 总共内容 齐需要加上花括号. 这是不合的. 若是不在特殊按键列表中, 没必要加花括号. 你 不需要给普通字符, 数字加上括号, 以致像.(句点) 这些标记加上 {}. 而且, 当你在使用 Send 号令时, 你可以一次性发送多个字符, 数字或标记. 是以莫得必要为每一个字符写上一条 Send 号令. 举例:
Send, {a} ; 纰谬 Send, {b} ; 纰谬 Send, {c} ; 纰谬 Send, {a}{b}{c} ; 纰谬 Send, {abc} ; 纰谬 Send, abc ; 正确
思要默示按住或减轻某个按键, 可以将这个键用花括号围起来, 同期加上单词 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} ; 然后减轻进取键.
当今你可能会思, "若何才能让我在发送超长文本时保证文本的可读性?". 很浅薄. 使用咱们所说的延续片断. 只需要在新行指定一个开括号, 然后是内容, 临了在它我方的行上加上一个闭括号. 思了解更多信息, 请阅读联系的 Continuation Sections(延续片断).
Send, ( Line 1 Line 2 Apples are a fruit. )
防范: Send 号令有几种不同的方式. 每种方式有其特色. 若是一种方式的 Send 号令不成称心你的需要, 可以试试另一种方式. 只需要将 "Send" 号令替换成接下来的其中一个: SendRaw, SendInput, SendPlay, SendEvent. 思要了解每一个号令的详备内容, 请阅读这里.
a. 游戏相当热切: 一些游戏, 尤其是多东谈主游戏, 使用反舞弊要道, 举例 GameGuard, Hackshield, PunkBuster 等. 且不说绕开反舞弊系统是违犯游戏执法的, 绕开反舞弊自己也不太容易终了.
若是游戏的反舞弊系统导致你的热键, 热字串和 Send 号令失效, 你是不侥幸的. 关联词有一些门径也许能提升在某些游戏中使用热键的可能性, 但没东谈主能打保票一定能行. 是以, 尽可能尝试 总共 你能思到的认识, 不要毁坏撤销.
还有一个对于 DirectX 的问题要防范. 当你在 DirectX 游戏中使用 AutoHotkey 遭遇问题时, 试试 FAQ 页面中刻画的情况. 当你使用 PixelSearch, PixelGetColor 或 ImageSearch 号令时, 你可能会遭遇更多对于 DirectX 的问题. 画面容貌可能会酿成玄色(0x000000), 无论你开发的是什么容貌. 若是可能的话, 试试用窗口模式运行游戏. 这样作念粗略处理一些 DirectX 问题.
莫得全能的认识能确保 AutoHotkey 能运行在总共要道里. 若是你试了总共的认识如故不行, 也许 AutoHotkey 暂时无法称心你的需要.
4 - 翻开要道 & 网页思要翻开诸如绘制(mspaint.exe), 筹备器(calc.exe), 剧本.ahk 或一个文献夹, 你可以使用 Run 号令. 你还可以用这个号令翻开一个网址, 比如 https://autohotkey.com/. 若是你思翻开一个也曾装配好的要道, 也很浅薄, 就像这样:
; 运行一个要道. 防范: 大部分的要道可能需要完好旅途. Run, %A_ProgramFiles%\Some_Program\Program.exe ; 翻开一个网址 Run, https://autohotkey.com
还有其他一些高档特色, 比如号令行参数和 CLSID(Windows 类符号符).
底下是一些对于 Run 号令的示例:
; 一些要道并不需要完好旅途, 如 Windows 尺度要道. Run, notepad.exe Run, msPaint.exe ; 使用 AHK 内置变量来翻开 "我的文档" Run, %A_MyDocuments% ; 翻开一些网页: Run, https://autohotkey.com Run, https://www.google.com
思要潜入了解更多信息和示例, 请检察: Run 页面.
5 - 号令和函数AutoHotkey 有两个热切的用具供开发者使用: 号令和函数.
总共号令和内置函数的列表可以在这里找到.
号令你可以通过语法来分辨号令和函数. 号令后头的参数无需使用圆括号, 而函数需要使用. 是以号令就像底下这样:
Command, 参数1, 参数2, 参数3
当你使用号令时, 不成将几条号令放在兼并转(IfEqual 之外). 也不成将一个号令作为参数插入到另一个号令. 举例:
MsgBox, Hello Run, Notepad.exe ; 纰谬 MsgBox, Hello, Run, Notepad.exe ; 纰谬 MsgBox, Hello ; 正确 Run, Notepad.exe
跟函数不同的是, 号令使用 "传统语法". 这意味着 需要 在变量的前后加上 %, 比如 %Var%. 而文本和数字则不需要加双引号, 举例 This is some text. 另外, 与函数不同, 号令的参数不成进交运算.
若是照实思要在参数中进交运算, 可以使用单个 % 来强制界说一个抒发式, 但咱们这里将不触及这些内容.
函数如上所述, 函数不同于号令的处所在于函数需要使用圆括号. 一个典型的函数是这样的:
Function(参数1, 参数2, 参数3)
与号令比较, 函数有底下几个主要各异:
你可以使用运算.SubStr(37 * 12, 1, 2) SubStr(A_Hour - 12, 2)变量不需要加上百分号:
SubStr(A_Now, 7, 2)函数可以嵌套另一个函数:
SubStr(A_AhkPath, InStr(A_AhkPath, "AutoHotkey"))文本前后需要加上双引号:
SubStr("I'm scripting, awesome!", 16)
函数庸碌会复返一个值, 这少许与号令也不一样. 号令需要开发 OutputVar 参数来保存斥逐, 而函数不需要. 将函数的复返值赋给变量的最常用门径, 只需要这样作念:
MyVar := SubStr("I'm scripting, awesome!", 16)
这不是赋值的惟一门径, 但这是最常用的. 您使用 MyVar 来存储函数的复返值, 即写在 := 操作符的右边, 更多信息, 请参阅函数页面.
简而言之:
作业帮在线拍照解题; 这些是号令 MsgBox, This is some text. StringReplace, Output, Input, AutoHotKey, AutoHotkey, ALL SendInput, This is awesome{!}{!}{!} ; 这些是函数 SubStr("I'm scripting, awesome!", 16) FileExist(VariableContainingPath) Output:=SubStr("I'm scripting, awesome!", 16)a. 代码块
代码块即是用一双花括号({ 和 }) 包围起来的一段代码, AutoHotkey 以此来判断这些代码是一个举座. 代码块庸碌用于 If 和 Loop 中. 若是不使用花括号, 整块代码中唯有第一转代码能被实行.
底下的代码中, 当 MyVar 等于 5 时, 总共行齐会实行.
if (MyVar=5) { MsgBox, MyVar equals %MyVar%!! ExitApp }
底下的代码中, 当 MyVar 等于 5 时, 才能贯通音信框. 但即使 MyVar 不等于 5, 剧本也永恒会退出:
if (MyVar = 5) MsgBox, MyVar equals %MyVar%!! ExitApp
If 后头唯有一转与它联系的代码, 底下的例子作念了一个相当好的代码编写示范. 它终了的功能跟上头的代码一样, 但是我将第二行代码进行了缩进排版, 这样写让咱们很容易就知谈这行代码是跟 If 关联的:
if (MyVar = 5) MsgBox, MyVar equals %MyVar%!! MsgBox, We are now 'outside' of the if-statement. We did not need curly brackets since there was only one line below it.6 - 变量
变量就像一个包含信息的便利贴. 它可以用于函数, 号令或数学抒发式中, 充任存储文本, 数字, 数据的作用. 若是莫得变量, 要道和剧本将会相当乏味.
给变量赋值有好多门径, 咱们将会连系最常见的几种门径. 请杰出寄望等号(=). 传统的文本赋值MyVar = Text
这是给变量赋值最浅薄的门径, 亦然传统的赋值门径. 只需要在等号后头输入文本就行了.
传统的变量赋值MyVar = %MyVar2%
和上头的门径雷同, 只是你将一个变量所对应的值赋给了另一个变量.
传统的搀杂赋值MyVar = %MyVar2% some text %MyVar3%.
以上两个传统赋值的组合.
抒发式文本赋值MyVar := "Text"
这是一个抒发式赋值, 因为 : 在 = 之前. 任何文本齐需要在引号中间.
抒发式变量赋值MyVar := MyVar2
在抒发式模式中, 变量不需要百分号.
抒发式数字赋值MyVar := 6 + 8 / 3 * 2 - Sqrt(9)
感谢抒发式, 你能进行筹备!
抒发式搀杂赋值MyVar := "The value of 5 + " MyVar2 " is: " 5 + MyVar2
以上三个抒发式赋值的组合.
等号(=) 和它前边的标记, 如 := += -= .= 等等, 这些被称为赋值运算符, 何况老是需要一个抒发式.
a. 什么时候使用百分号对于变量一个最常见的问题是什么时候使用百分号(%). 但愿底下这些内容粗略扼杀一些困惑.
什么时候要使用百分号:
当你使用号令时(见前文), 参数是输出变量 OutputVar 或输入变量 InputVar 时之外. 当你使用传统模式(等号前边莫得其他标记) 给一个变量赋值时.什么时候 不要 使用百分号:
参数中的输入或输出变量. 举例: StringLen, OutputVar, InputVar 赋值时左边的变量: 举例: Var = 123abc 在传统 If 语句(不包括抒发式) 中, 中左边的变量: If Var1 < %Var2% 在抒发式中的变量, 举例:If (Var1 != Var2) Var1 := Var2 + 100b. 赢得用户输入
只怕候你思让用户来聘请某些值. 这可以有好多种门径, 但其中最浅薄的认识即是使用 InputBox 号令. 底下的例子展示了如何向用户建议一堆问题并左证用户的输入完成一些事情:
InputBox, OutputVar, Question 1, What is your first name? if (OutputVar="Bill") MsgBox, That's an awesome name`, %OutputVar%. InputBox, OutputVar2, Question 2, Do you like AutoHotkey? if (OutputVar2 = "yes") MsgBox, Thank you for answering %OutputVar2%`, %OutputVar%! We will become great friends. else MsgBox, %OutputVar%`, That makes me sad.c. 其他示例
MsgBox, 4,, Would you like to continue? IfMsgBox, No return ; 若是聘请 No, 剧本将会隔断. MsgBox You pressed YES. ; 不然, 用户聘请了 YES.
; 底下的例子展示了什么时候该使用百分号, 什么时候不该. 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 是传统的. 不外, 唯有赋值语句 "右边" 的变量需要百分号.7 - 对象
对象是一种组织数据以终了更高效使用的门径. 只怕候对象被手脚数组, 在这要点声明一下总共的数组齐是对象. 咱们调用对象不同的东西取决于咱们使用它们的策动, 但是总共对象齐是交流的.
对象基本上是变量的网络. 变量的称号叫作念 "键", 变量的内容叫作念 "值".
当你听到东谈主们把一个对象叫作念 数组 或 索引数组时, 证据这个对象的键是从 1 运行递加的连气儿数字. 当你听到东谈主们把一个对象叫作念 关联数组, 证据这个对象的键要么使用字符串(或文本), 要么使用不连气儿的数字. 只怕可能是两者的搀杂, 也有可能是数列!
一个对象的键和值可以是什么, 莫得任何摒弃, 它们以致可以是另一个数组! 若是一个对象的值亦然数组, 咱们把它叫作念 嵌套数组, 这个咱们以后再阐扬.
您可能思要使用对象的原因有好多, 一些例子:
当你需要刻画一组有序列表时, 比如杂货店列表(这种情况最佳使用索引数组) 当你需要刻画一个图形方格时, 比如一个棋盘游戏(这种情况最佳使用嵌套对象) 当你需要刻画一组事物而每样事物齐有我方的称号时, 比如刻画生果的特色(这种情况最佳使用关联数组) a. 创建对象咱们有好多门径可以创建对象, 底下先容最常用的几种门径:
方括号语法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)
这种方式跟大括号语法方式一样, 区别只是是摄取了函数的方式.
请防范, 总共这些门径齐创建了兼并样东西(也即是对象), 区别只是是对象的键不一样.
b. 使用对象使用对象有好多方式, 包括检索值, 开发值, 添加更多的值等等.
开发值 方括号默示法Banana["Pickled"] := True ; 这个香蕉烂透了. 呃...
在对象中开发值跟开发变量的值一样浅薄. 你需要作念的是把方括号所代表的值在抒发式赋值运算符 := 的左边.
句点默示法Banana.Consistency := "Mushy"
和上头一样, 但是用点(.) 标记.
检索值 方括号默示法Value := Banana["Color"]
这允许你使用抒发式作为键从对象中赢得值. 在这个例子中, 我使用抒发式 "Color", 不要骇怪我仅使用键 Color 就会得到一个包含单词 "Yellow" 的值, 因为咱们预先(在上一节) 就开发了键 Color.
句点默示法Value := Banana.Color
仅允许使用原样的字串作为键名. 在句点默示法中, 键名不成使用变量.
增多新的键和值 方括号默示法MyObject["NewerKey"] := 3.1415
思要平直添加一双键和值, 只需开发一个尚不存在的键即可.
句点默示法MyObject.NewKey := "Shiny"
和上头一样, 但是用点标记.
InsertAt(在..插入) 法MyObject.InsertAt(Index, Value1, Value2, Value3...)
Index(索引) 为淘气整数键. 这会将 总共 更高的整数键的索引进取迁移插入值的数目, 即使是空缺的也一样(举例, 假定唯有键 1 和 100 存在, 当插入一个值到第 50 个键的位置时, 将导致原本位于 100 的键的索引酿成 101).
Push(推送) 法MyObject.Push(Value1, Value2, Value3...)
"追加" 值到数组 MyObject 的尾部. 换句话说, 它将插入的值放在 最高整数键 + 1 的位置.
移除键和值: 用空缺填充值Banana.Consistency := ""
最浅薄的删除值的门径即是用空缺填充. 你可以将其赋值为 ""(两个连气儿的双引号), 也即是常说的 空字符串. 这不会删除键, 但是它将使值看起来与从未赋值一样. 可以通过使用 HasKey 门径得知键依然存在, 而且键也会出当今 For 轮回中. (咱们一会再阐扬 For 轮回)
删除法RemovedValue := MyObject.Delete(AnyKey)
这和接下来的门径将删除键 和 值. MyObject[AnyKey] 先前的值将存储在 RemovedValue 中.
NumberOfRemovedKeys := MyObject.Delete(FirstKey, LastKey)
允许你删除 FirstKey 和 LastKey 之间的一系列的编号/整数或字符串键. 它给出的值将是被删除的键的数目, 若是你的键之间有裂缝, 这是有用的(举例你指定键从 1 到 4, 但是键 2 不存在, 这将开发 NumberOfRemovedKeys 为 3, 因为唯有三个键被移除).
Pop(抛出) 法MyObject.Pop()
这将删除最高的整数键, 并复返这个键对应的值. 而且这种方式不会影响其他键的索引规则(因为莫得比它更高的序列了).
RemoveAt(在..删除) 门径RemovedValue := MyObject.RemoveAt(Index)
NumberOfRemovedKeys := MyObject.RemoveAt(Index, Length)
这将移除从 Index 到 Index + Length - 1(包含) 之间的总共键(举例 Index 为 5, Length 为 3, 则将删除键 5, 6, 7 这三个键). 若是 Length 不详则默许为 1. 移除这些键之后, 更高数字或整数的键将向下填充空缺, 是以若是有个值位于 Index + Length 那么它当今的位置即是 Index. 这很像 InsertAt 门径操作多个指定值的操作.
8 - 其他有用的东西亲爱的一又友, 当你阅读到这里, 证据将近收尾咱们这段旅程了. 我但愿你有所得益. 临了, 我将告诉你一些我认为你可能有用的东西. 但愿你过的气象!
a. 深奥的 [ ]在匡助文档中, 你可能会发现存两个标记([ 和 ]) 庸碌出当今简直每一页来源的黄色代码框中. 方括号中的内容代表 可选的. 也即是说, 若是你不需要这些参数你填塞可以无论它. 不外要强调少许, 当你在写代码时, 千万 不要 把 [ ] 也写上了.
p>举例, 在 ControlGetText 号令页面, 你可能会看到这段代码:ControlGetText, OutputVar , Control, WinTitle, WinText, ExcludeTitle, ExcludeText
是以你可以浅薄的写成这样:
ControlGetText, OutputVar
或者再加上一些细节:
ControlGetText, OutputVar, Control, WinTitle
若是你思只使用参数 ExcludeTitle 而不思使用参数 WinText 或 WinTitle, 若何办? 很浅薄!
ControlGetText, OutputVar, Control,,, ExcludeTitle
请防范, 你不成忽略参数, 只是需要将它们的位置留空. 若是你像底下这样忽略 WinTitle, WinText, 将会产生纰谬:
ControlGetText, OutputVar, Control, ExcludeTitleb. 查找你的 AHK 版块
你可以运行底下的代码来检察你的 AHK 版块信息:
MsgBox, %A_AhkVersion%
你也可以到运行菜单或装配旅途下的匡助文献(即本文) 中去找.
c. 尝试与纰谬尝试和纰谬诟谇常精深而高效的学习门径. 与动不动就问长问短比较, 只怕候花点时候(也许是穷年累月) 亲手尝试可能会学的更快.
若是你在尝试新东西的经由遭遇纰谬, 没关系, 就从处理这个纰谬运行. 尝试处理这个纰谬, 一次不行就两次. 屡次尝试后如故处理不了, 可以翻开匡助文献学习哪些能作念哪些不成作念, 然后修改你的代码再试试. 试试, 失败, 试试, 失败, 试试, 试试, 再试试, 失败, 失败, 胜仗!
这亦然好多专家们的学习履历. 不外也不要发怵发问, 咱们不会咬东谈主(至少不会咬的太狠). 学习总需要时候逐渐积聚, 专家也不是一天练就的.
"若当先你莫得胜仗, 戮力, 戮力, 握住的戮力." - 威廉 · 爱德华 · 希克森.
d. 缩进缩进这个事相当热切! 你的代码莫得它也能通俗运行, 然则若是莫得缩进会让阅读代码酿成一件相当灾难的事. 也许一小段代码(少于 25 行) 毋庸缩进也莫得太大关系, 但是代码一朝增多, 缩进就相当有必要. 是以, 学习使用缩进越快越好. 缩进莫得固定的作风, 但最佳保持一种作风.
"什么是缩进?" 你可能会问? 浅薄的说即是在代码和页面畛域保留一段距离, 这样可以分别这一段代码是属于哪一段代码. 有些东谈主风俗使用 3, 4 个空格或 1 个 tab 来默示缩进, 每一级用一次缩进.
毋庸缩进:
if (car="old") { MsgBox, The car is really old. if (wheels = "flat") { MsgBox, This car is not safe to drive. Return } else { MsgBox, Be careful! This old car will be dangerous to drive. } } else { MsgBox, My`, what a shiny new vehicle you have there. }
使用缩进:
if (car="old") { MsgBox, The car is really old if (wheels = "flat") { MsgBox, This car is not safe to drive. Return } else { MsgBox, Be careful! This old car will be dangerous to drive. } } else { MsgBox, My`, what a shiny new vehicle you have there. }
对于缩进, 维基百科上缩进样子页面有好多作风示例. 建议选一种你心爱的或你认为最容易阅读的作风来学习.
e. 寻求匡助在你发问之前, 最佳我方先连系一下或者我方先出手试着写代码. 若是我方真的得不到舒坦的斥逐, 请往下看.
不要发怵发问, 即使是天下上最奢睿的东谈主也需要别东谈主的匡助. 不要发怵给别东谈主看你写的代码, 就算你以为代码有点弱智. 将总共你尝试的代码齐贴出来. 假定 其他东谈主 齐是外行人. 把你掌抓的总共信息齐教给咱们这些外行人. 匡助咱们即是匡助你我方. 耐烦. 礼貌. 通达. 友善. 祝你好运.若是你莫得赶紧得到谜底, 至少等一天再发问. 咱们乐于助东谈主, 但是咱们亦然在我方的空余时候里免费提供匡助. 也许咱们正在职责, 睡眠, 玩游戏, 和家东谈主在一谈或太忙了, 没只怕候维护.
在恭候匡助时, 你也可以试着我方出手处理. 落寞处理问题的嗅觉极度可以.
f. 其他集会常见问题(FAQ)清纯诱惑