# #Include / #IncludeAgain

使脚本表现得好像指定文件的内容出现在这个位置一样.

    #Include FileOrDirName
    #Include <LibName>
    #IncludeAgain FileOrDirName

## 参数

FileOrDirName

  如下所示的文件或目录的路径. 这 不能 包含双引号, 通配符, 或对非内置变量的引用. 不能使用除分号(`;) 之外的转义序列, 也不需要使用, 因为像百分号这样的字符是按原义处理的.

  不属于有效变量引用部分的百分号是原义解释的. 所有内置变量都是有效的, 除了 ErrorLevel, A_Args 和数字变量. 在 [v1.1.28] 之前, 只支持 %A_ScriptDir%, %A_AppData%, %A_AppDataCommon% 和 [v1.1.11+] 中的 %A_LineFile%.

  已知限制: 编译脚本时, 变量由编译器计算, 并且可能与脚本最终执行时返回的值不同. Ahk2Exe v1.1.30.00 及之前的版本只支持上面列出的四个变量. [v1.1.30.01+]: 还支持以下变量: A_AhkPath, A_ComputerName, A_ComSpec, A_Desktop, A_DesktopCommon, A_IsCompiled, A_IsUnicode, A_MyDocuments, A_ProgramFiles, A_Programs, A_ProgramsCommon, A_ScriptFullPath, A_ScriptName, A_Space, A_StartMenu, A_StartMenuCommon, A_Startup, A_StartupCommon, A_Tab, A_Temp, A_UserName, A_WinDir.

  File: 要包含的文件名, 如果未指定绝对路径, 则假定该文件位于启动/工作目录中(除了 Ahk2Exe, 假定该文件在脚本自己的目录中). 注意: SetWorkingDir 对 #Include 没有效果, 因为 #Include 是在脚本开始执行之前处理的.

  Directory: 指定目录而不是文件来改变后续所有的 #Include 和 FileInstall 使用的工作目录. 注意: 用这种方式改变工作目录不会影响脚本启动时的初始工作目录(A_WorkingDir). 要改变初始工作目录, 请在脚本的顶部使用 SetWorkingDir.

LibName

  [AHK_L 57+]: 库文件或函数的名称. 例如, `#include <lib>` 和 `#include <lib_func>` 都会包含某个函数库文件夹中的 lib.ahk. LibName 不能包含变量引用.

## 备注

脚本的表现就像被包含的文件的内容实际出现在 #Include 指令的确切位置(就好像从包含的文件中复制粘贴过来一样). 因此, 它通常不能把两个孤立的脚本合并成一个可运行的脚本.

#Include 确保仅包含 FileName 一次, 即使它遇到多次重复的包含. 与之相比, #IncludeAgain 允许多次包含同一文件, 其他方面则和 #Include 一样.

可以在 FileName 参数前加上 `*i` 和单个空格, 这样会使程序忽略读取包含文件时出现的任何问题. 例如: `#Include *i SpecialOptions.ahk`. 此选项应该仅在包含文件的内容对主脚本的操作可有可无的情况下才使用.

通过 ListLines 或菜单 View->Lines 显示在主窗口的那些行总是按照它们在文件内的物理顺序编号的. 换句话说, 包含新文件只会改变主脚本文件的一行编号, 即 #Include 所在行(除了已编译脚本, 它会在编译时把它们包含的文件合并成一个大的脚本).

#Include 常用来加载在外部文件中定义的函数. 和子程序标签不同, 可以在脚本的顶部包含函数而不影响自动执行段.

与其他指令类似, 不能根据条件执行 #Include. 换句话说, 这个例子不起作用:

    if (x = 1)
        #Include SomeFile.ahk  ; 不管 x 的值是什么此行都会执行.

通过调用库函数中的函数名称可以自动将文件包含进来(即不需要使用 #Include).

[v1.1.11+]: 使用 `%A_LineFile%\..` 可以引用包含当前文件的目录, 即使当前文件不是主脚本文件也有效. 例如, `#Include %A_LineFile%\..\other.ahk`. [v1.1.28+]: `%A_AhkPath%\..` 可用于引用包含 AutoHotkey.exe 的目录.

## 相关

函数库, 函数, FileInstall

## 示例

将指定文件的内容包含到当前脚本中.

    #Include C:\My Documents\Scripts\Utility Subroutines.ahk

改变后续 #Includes 和 FileInstalls 的工作目录.

    #Include %A_ScriptDir%

和上面一样, 但是使用显示命名的目录.

    #Include C:\My Scripts

dftg