什么是 #Include
指令?
#Include
是 AutoHotkey 实现代码模块化、复用和组织的重要命令。它可以帮助你将代码拆分为多个文件,便于管理和维护,同时还能加载强大的第三方库扩展脚本功能。在使用时注意路径问题和函数命名冲突,就能充分发挥 #Include
的优势。
使用 #Include
的基本语法 和 文件路径的解释
以下按推荐顺序来解释3种路径写法的不同之处,推荐分先后顺序,但是你需要了解3种用法便于看懂别人代码的引用。
一、本地库 和 标准库 写法,例如 #Include <FindText>
1、本地库 适用于项目模块化管理。将类库文件(例如:FindText.ahk)存放在脚本文件所在目录的 Lib
文件夹中,主脚本运行时会自动识别。避免了主脚本中包含几十上百K的函数库内容,便于将主逻辑和函数库分离,提高可读性和可维护性。
使用 #Include
加载第三方函数库,例如 FindText.ahk、 Gdip.ahk 等,用于扩展 AutoHotkey 的功能。
; 主脚本内容如下: #Include <FindText> ; FindText全屏截图 FindText().SavePic(A_Desktop "\FindText全屏截图.bmp", 0, 0, A_ScreenWidth, A_ScreenHeight) Return
2、标准库 是存放在 AHK 安装目录的 Lib
文件夹中的脚本类库。这些类库也可通过 #Include <类库名>
语法直接调用。
标准库路径:通常,标准库的路径为 AHK 安装目录下的 Lib
文件夹 (C:\Program Files\AutoHotkey\Lib
)
将类库文件(例如:FindText.ahk)标准库路径后,通过标准库加载时,文件名就可省略掉路径,直接用尖括号 <类库名>
。
; 主脚本内容如下:【和本地库用法一致】 #Include <FindText> ; FindText全屏截图 FindText().SavePic(A_Desktop "\FindText全屏截图.bmp", 0, 0, A_ScreenWidth, A_ScreenHeight) Return
标准库高级技巧:
如下代码所示,在AHKv1版中如果调用FindText(),#Include又不存在时。脚本会在标准库中搜索名为 "FindText.ahk" 的文件,如果标准库中有与函数同名的.ahk类库时,下面这段代码无需写 #Include
语句也能自动加载并截图成功。更多细节详见
; FindText全屏截图 FindText().SavePic(A_Desktop "\FindText全屏截图.bmp", 0, 0, A_ScreenWidth, A_ScreenHeight) Return
二、路径写法 例如 #Include C:\MyScripts\FindText.ahk
路径写法可以是绝对路径或相对于当前脚本的相对路径。它指定了要加载包含的文件路径。例如:
#Include C:\MyScripts\FindText.ahk ; 绝对路径 #Include %A_ScriptDir%\Lib\FindText.ahk ; 相对路径1 #Include .\Lib\FindText.ahk ; 相对路径2【等效于上条】
当脚本运行时,#Include
会将目标文件的代码内容加载到当前位置。
使用 #Include
的注意事项
- 路径解析规则
-
- 如果使用相对路径,路径是相对于当前脚本所在的目录,而非运行时的工作目录。
- 可以使用
A_ScriptDir
内置变量获取当前脚本的目录,确保路径解析正确。
总结
#Include
是将指定文件的内容直接插入到当前脚本中。这样你就可以将不同的代码模块分开存储,并在多个脚本之间复用代码模块,组织脚本结构以及方便地共享公共函数或库。因此被包含的文件中的代码会被当作当前脚本的一部分。
一般#Include命令都是放在脚本头部的,这样做是方便阅读时查看这个脚本都调用了哪些库。但是有些Lib类库内容中不全是函数,一旦引用的类库包含了Return或者热键就会打断主脚本的正常运行。这种情况可将#Include命令写在主脚本的底部,避免不好的类库影响主脚本运行。
评论(0)