什么是 #Include 指令?

#Include 是 AutoHotkey 实现代码模块化、复用和组织的重要命令。它可以帮助你将代码拆分为多个文件,便于管理和维护,同时还能加载强大的第三方库扩展脚本功能。在使用时注意路径问题和函数命名冲突,就能充分发挥 #Include 的优势。

 

使用 #Include 的基本语法 和 文件路径的解释

以下按推荐顺序来解释3种路径写法的不同之处,推荐分先后顺序,但是你需要了解3种用法便于看懂别人代码的引用。

 

一、本地库 和 标准库 写法,例如 #Include <FindText>

1、本地库 适用于项目模块化管理。将类库文件(例如:FindText.ahk)存放在脚本文件所在目录的 Lib 文件夹中,主脚本运行时会自动识别。避免了主脚本中包含几十上百K的函数库内容,便于将主逻辑和函数库分离,提高可读性和可维护性。

使用 #Include 加载第三方函数库,例如 FindText.ahkGdip.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命令写在主脚本的底部,避免不好的类库影响主脚本运行。

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。