#Include / #IncludeAgain

스크립트는 마치 지정된 파일의 내용이 정확하게 이 위치에 존재하는 것처럼 행위합니다.

#Include FileOrDirName
#Include <LibName>
#IncludeAgain FileOrDirName

매개변수

FileOrDirName

아래에 기술하는 바와 같이 파일이나 디렉토리의 경로. This must not contain double quotes, wildcards, or references to non-built-in variables. 피신 연속열은 쌍점 (`;)을 제외하고 사용하면 안됩니다. 퍼센트 기호 같은 문자들을 문자 그대로 취급하기 때문에 필요하지도 않습니다.

Percent signs which are not part of a valid variable reference are interpreted literally. All built-in variables are valid, except for ErrorLevel, A_Args and the numbered variables. Prior to [v1.1.28], only %A_ScriptDir%, %A_AppData%, %A_AppDataCommon% and [in v1.1.11+] %A_LineFile% were supported.

알려진 한계: When compiling a script, variables are evaluated by the compiler and may differ from what the script would return when it is finally executed. Ahk2Exe v1.1.30.00 and earlier only support the four variables listed above. [v1.1.30.01+]: The following variables are also supported: 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 cannot contain variable references.

논평

스크립트는 마치 포함된 파일의 내용이 (마치 복사해 붙여 넣기 한 것처럼) 물리적으로 정확하게 #Include 지시어의 위치에 존재하는 것처럼 행위합니다. 결과적으로, 두 개의 분리된 스크립트를 하나로 기능하는 스크립트로 병합할 수 없습니다.

#Include는 FileName을 여러 번 포함시켜도 오직 한 번만 포함된다고 확인해 줍니다. 대조적으로, #IncludeAgain은 같은 파일을 여러 번 포함할 수 있습니다. 하지만 모든 면에서 #Include와 똑 같습니다.

FileName 매개변수는 선택적으로 앞에 *i와 하나의 스페이스를 둘 수 있습니다. 그러면 프로그램은 포함된 파일을 읽는데 실패하더라도 무시합니다. 예를 들어: #Include *i SpecialOptions.ahk. 이 옵션은 포함된 파일의 내용이 메인 스크립트의 연산에 별로 중요하지 않을 경우에만 사용해야 합니다.

메인 창에 ListLines이나 View->Lines 메뉴를 통하여 보여지는 줄들은 언제나 자신의 파일 안에서 물리적 순서에 맞게 번호가 매겨집니다. 다른 말로, 새 파일을 포함하면 메인 스크립트의 파일의 줄 번호가 한 줄 만큼만 변경됩니다. 즉, #Include 줄 자체 만큼 변경됩니다 (컴파일된 스크립트는 제외합니다. 포함 파일을 하나의 거대한 스크립트로 컴파일 시간에 병합하기 때문입니다).

#Include는 종종 외부 파일에 정의된 함수를 적재하는 데 사용됩니다. 서브루틴의 라벨과 다르게, 함수자동-실행 섹션에 영향을 주지 않고 스크립트 맨 꼭대기에 포함할 수 있습니다.

다른 지시어처럼, #Include는 조건적으로 실행할 수 없습니다. In other words, this example would not work as expected:

if (x = 1)
    #Include SomeFile.ahk  ; 이 줄은 x의 값에 관계 없이 효과가 있습니다.

이름으로 라이브러리 함수를 호출하면 파일을 자동으로 포함할 수 있습니다 (즉, #Include를 사용할 필요가 없습니다).

[v1.1.11+]: %A_LineFile%\..를 사용하면 현재 파일이 담긴 디렉토리를 참조할 수 있습니다. 메인 스크립트 파일이 아니더라도 상관이 없습니다. 예를 들어, #Include %A_LineFile%\..\other.ahk. [v1.1.28+]: %A_AhkPath%\.. can be used to refer to the directory containing AutoHotkey.exe.

라이브러리 함수, Functions, FileInstall

예제

Includes the contents of the specified file into the current script.

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

다음에 오는 #Includes과 FileInstalls을 위해작업 디렉토리를 변경합니다.

#Include %A_ScriptDir%

위와 같지만 명시적으로 이름을 지정한 디렉토리를 위해 변경합니다.

#Include C:\My Scripts