</head> <body> <h1>Script Compiler Directives <span class="ver">[v1.1.33+]</span></h1> <h2 id="toc">Sumário</h2> <ul> <li><a href="#Intro1">Introduction</a></li> <li><a href="#IgnoreKeep">Directives that control the script behaviour</a>:</li> <ul> <li><a href="#IgnoreKeep">IgnoreBegin</a></li> <li><a href="#IgnoreKeep">IgnoreEnd</a></li> <li><a href="#IgnoreKeep">IgnoreKeep</a></li> </ul> <li><a href="#Directives">Directives that control executable metadata</a>:</li> <ul> <li><a href="#Intro2">Introduction</a></li> <li><a href="#AddResource">AddResource</a>: Adds a resource to the .exe.</li> <li><a href="#Bin">Bin / Base</a> <span class="ver">[v1.1.33.10+]</span>: Specifies the base version of AutoHotkey to use.</li> <li><a href="#ConsoleApp">ConsoleApp</a>: Sets Console mode.</li> <li><a href="#Cont">Cont</a>: Specifies a directive continuation line.</li> <li><a href="#Debug">Debug</a>: Shows directive debugging text.</li> <li><a href="#ExeName">ExeName</a>: Specifies the location and name for the .exe.</li> <li><a href="#Let">Let</a>: Sets a user variable.</li> <li><a href="#Nop">Nop</a> <span class="ver">[v1.1.34.03c+]</span>: Does nothing.</li> <li><a href="#Obey">Obey</a>: Obeys a command or expression.</li> <li><a href="#PostExec">PostExec</a>: Runs a program after compilation.</li> <li><a href="#ResourceID">ResourceID</a> <span class="ver">[v1.1.34+]</span>: Assigns a non-standard resource ID to the main script.</li> <li><a href="#SetMainIcon">SetMainIcon</a>: Sets the main icon.</li> <li><a href="#SetProp">Set<i>Prop</i></a>: Sets an .exe property.</li> <li><a href="#Set">Set</a>: Sets a miscellaneous property.</li> <li><a href="#UpdateManifest">UpdateManifest</a>: Changes the .exe's manifest.</li> <li><a href="#UseResourceLang">UseResourceLang</a>: Changes the resource language.</li> </ul> </ul> <h2 id="Intro1">Introduction</h2> <p>Script compiler directives allow the user to specify details of how a script is to be compiled via <a href="../Scripts.htm#ahk2exe">Ahk2Exe</a>. Some of the features are:</p> <ul> <li>Ability to change the version information (such as the name, description, version...).</li> <li>Ability to add resources to the compiled script.</li> <li>Ability to tweak several miscellaneous aspects of compilation.</li> <li>Ability to remove code sections from the compiled script and vice versa.</li> </ul> <p>The script compiler looks for special comments in the source script and recognises these as Compiler Directives. All compiler directives are introduced by the string <code>@Ahk2Exe-</code>, preceded by the comment flag (usually <code>;</code>).</p> <h2 id="IgnoreKeep">Directives that control the script behaviour</h2> <p>It is possible to remove code sections from the compiled script by wrapping them in directives:</p> <pre class="NoIndent">MsgBox This message appears in both the compiled and uncompiled script <em>;@Ahk2Exe-IgnoreBegin</em> MsgBox This message does NOT appear in the compiled script <em>;@Ahk2Exe-IgnoreEnd</em> MsgBox This message appears in both the compiled and uncompiled script </pre> <p>The reverse is also possible, i.e. marking a code section to only be executed in the compiled script:</p> <pre class="NoIndent"><em>/*@Ahk2Exe-Keep MsgBox This message appears only in the compiled script */</em> MsgBox This message appears in both the compiled and uncompiled script </pre> <p>This has advantage over <a href="../Variables.htm#IsCompiled">A_IsCompiled</a> because the code is completely removed from the compiled script during preprocessing, thus making the compiled script smaller. The reverse is also true: it will not be necessary to check for <a href="../Variables.htm#IsCompiled">A_IsCompiled</a> because the code is inside a comment block in the uncompiled script.</p> <h2 id="Directives">Directives that control executable metadata</h2> <h3 id="Intro2">Introduction</h3> <p>In the parameters of these directives, the following escape sequences are supported: <code>``</code>, <code>`,</code>, <code>`n</code>, <code>`r</code> and <code>`t</code>. Commas <em>always</em> need to be escaped, regardless of the parameter position. "Integer" refers to unsigned 16-bit integers (0..0xFFFF).</p> <p>If required, directive parameters can reference the following list of standard built-in variables by enclosing the variable name with <code>%</code> signs:</p> <p id="group1"><strong>Group 1:</strong> <a href="../Variables.htm#AhkPath">A_AhkPath</a>, <a href="../Variables.htm#AppData">A_AppData</a>, <a href="../Variables.htm#AppDataCommon">A_AppDataCommon</a>, <a href="../Variables.htm#ComputerName">A_ComputerName</a>, <a href="../Variables.htm#ComSpec">A_ComSpec</a>, <a href="../Variables.htm#Desktop">A_Desktop</a>, <a href="../Variables.htm#DesktopCommon">A_DesktopCommon</a>, <a href="../Variables.htm#MyDocuments">A_MyDocuments</a>, <a href="../Variables.htm#ProgramFiles">A_ProgramFiles</a>, <a href="../Variables.htm#Programs">A_Programs</a>, <a href="../Variables.htm#ProgramsCommon">A_ProgramsCommon</a>, <a href="../Variables.htm#ScriptDir">A_ScriptDir</a>, <a href="../Variables.htm#ScriptFullPath">A_ScriptFullPath</a>, <a href="../Variables.htm#ScriptName">A_ScriptName</a>, <a href="../Variables.htm#Space">A_Space</a>, <a href="../Variables.htm#StartMenu">A_StartMenu</a>, <a href="../Variables.htm#StartMenuCommon">A_StartMenuCommon</a>, <a href="../Variables.htm#Startup">A_Startup</a>, <a href="../Variables.htm#StartupCommon">A_StartupCommon</a>, <a href="../Variables.htm#Tab">A_Tab</a>, <a href="../Variables.htm#Temp">A_Temp</a>, <a href="../Variables.htm#UserName">A_UserName</a>, <a href="../Variables.htm#WinDir">A_WinDir</a>.</p> <p><strong>Group 2:</strong> <a href="../Variables.htm#AhkVersion">A_AhkVersion</a>, <a href="../Variables.htm#IsCompiled">A_IsCompiled</a>, <a href="../Variables.htm#IsUnicode">A_IsUnicode</a>, <a href="../Variables.htm#PtrSize">A_PtrSize</a>.</p> <p id="WorkFileName">In addition to these variable names, the special variable <strong>A_WorkFileName</strong> holds the temporary name of the processed .exe file. This can be used to pass the file name as a parameter to any <a href="#PostExec">PostExec</a> directives which need to access the generated .exe.</p> <p id="BasePath"> <span class="ver">[v1.1.34.04b+]</span> Furthermore, the special variable <strong>A_BasePath</strong> contains the full path and name of the selected base file.</p> <p id="PriorLine">Also, the special variable <strong>A_PriorLine</strong> contains the source line immediately preceding the current compiler directive. Intervening lines of blanks and comments only are ignored, as are any intervening compiler directive lines. This variable can be used to 'pluck' constant information from the script source, and use it in later compiler directives. An example would be accessing the version number of the script, which may be changed often. Accessing the version number in this way means that it needs to be changed only once in the source code, and the change will get copied through to the necessary directive. (See the RegEx example below for more information.)</p> <p>As well, special user variables can be created with the format <code>U_<i>Name</i></code> using the <a href="#Let">Let</a> and <a href="#Obey">Obey</a> directives, described below.</p> <p>In addition to being available for directive parameters, all variables can be accessed from any RT_MENU, RT_DIALOG, RT_STRING, RT_ACCELERATORS, RT_HTML, and RT_MANIFEST file supplied to the <a href="#AddResource">AddResource</a> directive, below.</p> <p>If needed, the value returned from the above variables can be manipulated by including at the end of the built-in variable name before the ending <code>%</code>, up to 2 parameters (called p2 and p3) all separated by tilde <code>~</code>. The p2 and p3 parameters will be used as literals in the 2nd and 3rd parameters of a <a href="../lib/RegExReplace.htm">RegExReplace</a> function to manipulate the value returned. (See <a href="RegEx-QuickRef.htm">RegEx Quick Reference</a>.) Note that p3 is optional.</p> <p>To include a tilde as data in p2 or p3, preceded it with a back-tick, i.e. <code>`~</code>. To include a back-tick character as data in p2 or p3, double it, i.e. <code>``</code>.</p> <strong>RegEx examples:</strong> <ul> <li> <pre class="NoIndent">%A_ScriptName~\.[^\.]+$~.exe%</pre> <p>This replaces the extension plus preceding full-stop, with <code>.exe</code> in the actual script name.<br>(<code>\.[^\.]+$~.exe</code> means scan for a <code>.</code> followed by 1 or more non-<code>.</code> characters followed by end-of-string, and replace them with <code>.exe</code>)</p> </li> <li> <p>Assume there is a source line followed by two compiler directives as follows:</p> <pre>CodeVersion := "1.2.3.4", company := "My Company"</pre> <pre><em>;@Ahk2Exe-Let U_version = %A_PriorLine~U)^(.+"){1}(.+)".*$~$2%</em></pre> <pre><em>;@Ahk2Exe-Let U_company = %A_PriorLine~U)^(.+"){3}(.+)".*$~$2%</em></pre> <p>These directives copy the version number <code>1.2.3.4</code> into the special variable <code>U_version</code>, and the company name <code>My Company</code> into the special variable <code>U_company</code> for use in other directives later.<br> (The <code>{1}</code> in the first regex was changed to <code>{3}</code> in the second regex to select after the third <code>"</code> to extract the company name.)</p> </li> </ul> <p><strong>Other examples:</strong> Other working examples which can be downloaded and examined, are available from <a href="https://github.com/AutoHotkey/Ahk2Exe/releases/tag/DemoCode_1">here</a>.</p> <h3 id="AddResource">AddResource</h3> <p>Adds a resource to the compiled executable. (Also see <a href="#UseResourceLang">UseResourceLang</a> below)</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-AddResource</span> FileName <span class="optional">, ResourceName</span></pre> <dl> <dt>FileName</dt> <dd>The filename of the resource to add. The file is assumed to be in (or relative to) the script's own directory if an absolute path isn't specified. The type of the resource (as an integer or string) can be explicitly specified by prepending an asterisk to it: <code>*type Filename</code>. If omitted, Ahk2Exe automatically detects the type according to the file extension.</dd> <dt>ResourceName</dt> <dd><i>(Optional)</i> The name that the resource will have (can be a string or an integer). If omitted, it defaults to the name (with no path) of the file, in uppercase.</dd> </dl> <p>Here is a list of common standard resource types and the extensions that trigger them by default.</p> <ul> <li>2 (RT_BITMAP): <code>.bmp</code>, <code>.dib</code></li> <li>4 (RT_MENU)</li> <li>5 (RT_DIALOG)</li> <li>6 (RT_STRING)</li> <li>9 (RT_ACCELERATORS)</li> <li>10 (RT_RCDATA): Every single other extension.</li> <li>11 (RT_MESSAGETABLE)</li> <li>12 (RT_GROUP_CURSOR): <code>.cur</code> (not yet supported)</li> <li>14 (RT_GROUP_ICON): <code>.ico</code></li> <li>23 (RT_HTML): <code>.htm</code>, <code>.html</code>, <code>.mht</code></li> <li>24 (RT_MANIFEST): <code>.manifest</code>. If the name for the resource is not specified, it defaults to <code>1</code></li> </ul> <p><strong>Example 1:</strong> To replace the standard icons (other than the <a href="#SetMainIcon">main icon</a>):</p> <pre><em>;@Ahk2Exe-AddResource Icon1.ico, 160 ; Replaces 'H on blue' ;@Ahk2Exe-AddResource Icon2.ico, 206 ; Replaces 'S on green' ;@Ahk2Exe-AddResource Icon3.ico, 207 ; Replaces 'H on red' ;@Ahk2Exe-AddResource Icon4.ico, 208 ; Replaces 'S on red'</em></pre> <p><strong>Example 2:</strong> <span class="ver">[v1.1.34+]</span> To include another script as a separate RCDATA resource (see <a href="../Program.htm#embedded-scripts">Embedded Scripts</a>):</p> <pre><em>;@Ahk2Exe-AddResource MyScript1.ahk, #2 ;@Ahk2Exe-AddResource MyScript2.ahk, MYRESOURCE</em></pre> <p>Note that each script added with this directive will be fully and separately processed by the compiler, and can include further directives. If there are any competing directives overall, the last encountered by the compiler will be used.</p> <h3 id="Bin">Bin / Base <span class="ver">[v1.1.33.10+]</span></h3> <p>Specifies the base version of AutoHotkey to be used to generate the .exe file. This directive may be overridden by a base file parameter specified in the GUI or CLI. This directive can be specified many times if necessary, but only in the top level script file (i.e. not in an <a href="../lib/_Include.htm">#Include</a> file). The compiler will be run at least once for each Bin/Base directive found. (If an actual comment is appended to this directive, it must use the <code>&nbsp;;</code> flag. To truly comment out this directive, insert a space after the first comment flag.)</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-Bin </span> [Path\]Name <span class="optional">, [Exe_path\][Name], Codepage</span> <em>; Deprecated</em> <span class="func">;@Ahk2Exe-Base</span> [Path\]Name <span class="optional">, [Exe_path\][Name], Codepage</span> <em>; <span class="ver">[v1.1.33.10+]</span></em></pre> <dl> <dt>[Path\]Name</dt> <dd>The *.bin file or in <span class="ver">[v1.1.33.10+]</span> the *.exe file to use. If no extension is supplied, <code>.bin</code> is assumed. The file is assumed to be in (or relative to) the compiler's own directory if an absolute path isn't specified. A DOS mask may be specified for <em>Name</em>, e.g. <code>ANSI*</code>, <code>Unicode 32*</code>, <code>Unicode 64*</code>, or <code>*bit</code> for all three. The compiler will be run for each *.bin or *.exe file that matches. Any use of built-in variable replacements must only be from <a href="#group1">group 1</a> above.</dd> <dt>[Exe_path\][Name]</dt> <dd><i>(Optional)</i> The file name to be given to the .exe. Any extension supplied will be replaced by <code>.exe</code>. If no path is specified, the .exe will be created in the script folder. If no name is specified, the .exe will have the default name. (This parameter can be overridden by the <a href="#ExeName">ExeName</a> directive.)</dd> <dt>Codepage</dt> <dd><i>(Optional)</i> Overrides the default <a href="https://learn.microsoft.com/windows/desktop/Intl/code-page-identifiers">codepage</a> used to process script files. (Scripts should begin with a Unicode byte-order-mark (BOM), rendering the use of this parameter unnecessary.)</dd> </dl> <h3 id="ConsoleApp">ConsoleApp</h3> <p>Changes the executable subsystem to Console mode.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-ConsoleApp</span></pre> <h3 id="Cont">Cont</h3> <p>Specifies a continuation line for the preceding directive. This allows a long-lined directive to be formatted so that it is easy to read in the source code.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-Cont</span> Text</pre> <dl> <dt>Text</dt> <dd>The text to be appended to the previous directive line, before that line is processed. The text starts after the single space following the <code>Cont</code> key-word.</dd> </dl> <h3 id="Debug">Debug</h3> <p>Shows a message box with the supplied text, for debugging purposes.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-Debug</span> Text</pre> <dl> <dt>Text</dt> <dd>The text to be shown. Include any special variables between <code>%</code> signs to see the (manipulated) contents.</dd> </dl> <h3 id="ExeName">ExeName</h3> <p>Specifies the location and name given to the generated .exe file. (Also see the <a href="#Bin">Base</a> directive.) This directive may be overridden by an output file specified in the GUI or CLI.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-ExeName</span> [Path\][Name]</pre> <dl> <dt>[Path\][Name]</dt> <dd>The .exe file name. Any extension supplied will be replaced by <code>.exe</code>. If no path is specified, the .exe will be created in the script folder. If no name is specified, the .exe will have the default name.</dd> </dl> <strong>Example:</strong> <pre><em>;@Ahk2Exe-Obey U_bits, = %A_PtrSize% * 8 ;@Ahk2Exe-Obey U_type, = "%A_IsUnicode%" ? "Unicode" : "ANSI" ;@Ahk2Exe-ExeName %A_ScriptName~\.[^\.]+$%_%U_type%_%U_bits%</em></pre> <h3 id="Let">Let</h3> <p>Creates (or modifies) one or more user variables which can be accessed by <code>%U_<i>Name</i>%</code>, similar to the built-in variables (see above).</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-Let</span> Name = Value <span class="optional">, Name = Value, ...</span></pre> <dl> <dt>Nome</dt> <dd>The name of the variable (with or without the leading <code>U_</code>).</dd> <dt>Value</dt> <dd>The value to be used.</dd> </dl> <h3 id="Nop">Nop <span class="ver">[v1.1.34.03c+]</span></h3> <p>Does nothing.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-Nop</span> <span class="optional">Text</span></pre> <dl> <dt>Text</dt> <dd><i>(Optional)</i> Any text, which is ignored.</dd> </dl> <strong>Example:</strong> <pre>Ver := A_AhkVersion "" <em>; If quoted literal not empty, do 'SetVersion' ;@Ahk2Exe-Obey U_V, = "%A_PriorLine~U)^(.+")(.*)".*$~$2%" ? "SetVersion" : "Nop" ;@Ahk2Exe-%U_V% %A_AhkVersion%%A_PriorLine~U)^(.+")(.*)".*$~$2%</em></pre> <h3 id="Obey">Obey</h3> <p>Obeys isolated AutoHotkey commands or expressions, with result in <code>U_<i>Name</i></code>.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-Obey</span> Name, CmdOrExp <span class="optional">, Extra</span></pre> <dl> <dt>Nome</dt> <dd>The name of the variable (with or without the leading <code>U_</code>) to receive the result.</dd> <dt>CmdOrExp</dt> <dd> <p>The command or expression to obey.</p> <p><strong>Command</strong> format must use <em>Name</em> as the output variable (often the first parameter), e.g.</p> <pre><em>;@Ahk2Exe-Obey U_date, FormatTime U_date`, R D2 T2</em></pre> <p><strong>Expression</strong> format must start with <code>=</code>, e.g.</p> <pre><em>;@Ahk2Exe-Obey U_type, = "%A_IsUnicode%" ? "Unicode" : "ANSI"</em></pre> <p>Expressions can be written in command format, e.g.</p> <pre><em>;@Ahk2Exe-Obey U_bits, U_bits := %A_PtrSize% * 8</em></pre> <p>If needed, separate multiple commands and expressions with <code>`n</code>.</p> </dd> <dt>Extra</dt> <dd><i>(Optional)</i> A number (1-9) specifying the number of extra results to be returned. e.g. if extra = 2, results will be returned in <code>U_<i>name</i></code>, <code>U_<i>name</i>1</code>, and <code>U_<i>name</i>2</code>. The values in the <code><i>name</i></code>s must first be set by the expression or command.</dd> </dl> <h3 id="PostExec">PostExec</h3> <p>Specifies a program to be executed after a successful compilation, before (or after) any <a href="../Scripts.htm#mpress">Compression</a> is applied to the .exe. This directive can be present many times and will be executed in the order encountered by the compiler, in the appropriate queue as specified by the <em>When</em> parameter.</p> <pre class="Syntax"> <span class="func">;@Ahk2Exe-PostExec</span> Program [parameters] <span class="optional">, When, WorkingDir, Hidden, IgnoreErrors</span></pre> <dl> <dt>Program [parameters]</dt> <dd>The program to execute, plus parameters. To allow access to the processed .exe file, specify the special variable <a href="#WorkFileName">A_WorkFileName</a> as a quoted parameter, such as <code>"%A_WorkFileName%"</code>. If the program changes the .exe, the altered .exe must be moved back to the input file specified by <code>%A_WorkFileName%</code>, by the program. (Note that the .exe will contain binary data.)</dd> <dt>When</dt> <dd> <p><i>(Optional)</i> Leave blank to execute before any <a href="../Scripts.htm#mpress">Compression</a> is done. Otherwise set to a number to run after compression as follows:</p> <ul> <li>0 - Only run when no compression is specified.</li> <li>1 - Only run when MPRESS compression is specified.</li> <li>2 - Only run when UPX compression is specified.</li> </ul> </dd> <dt>WorkingDir <span class="ver">[v1.1.33.03+]</span></dt> <dd><i>(Optional)</i> The working directory for the program. Do not enclose the name in double quotes even if it contains spaces. If omitted, the directory of the compiler (Ahk2Exe) will be used.</dd> <dt>Hidden <span class="ver">[v1.1.33.03+]</span></dt> <dd><i>(Optional)</i> If set to 1, the program will be launched hidden.</dd> <dt>IgnoreErrors <span class="ver">[v1.1.33.03+]</span></dt> <dd><i>(Optional)</i> If set to 1, any errors that occur during the launching or running of the program will not be reported to the user.</dd> </dl> <p><strong>Example 1:</strong> (To use the first two examples, first download <a href="https://github.com/AutoHotkey/Ahk2Exe/blob/master/BinMod.ahk">BinMod.ahk</a> and compile it according to the instructions in the downloaded script.)</p> <p>This example can be used to remove a reference to "AutoHotkey" in the generated .exe to disguise that it is a compiled AutoHotkey script:</p> <pre><em>;@Ahk2Exe-Obey U_au, = "%A_IsUnicode%" ? 2 : 1 ; Script ANSI or Unicode? ;@Ahk2Exe-PostExec "BinMod.exe" "%A_WorkFileName%" ;@Ahk2Exe-Cont "%U_au%2.&gt;AUTOHOTKEY SCRIPT&lt;. DATA "</em></pre> <p><strong>Example 2:</strong> This example will alter a UPX compressed .exe so that it can't be de-compressed with <code>UPX -d</code>:</p> <pre><em>;@Ahk2Exe-PostExec "BinMod.exe" "%A_WorkFileName%" ;@Ahk2Exe-Cont "11.UPX." "1.UPX!.", 2</em></pre> <p>(There are other examples mentioned in the <a href="https://github.com/AutoHotkey/Ahk2Exe/blob/master/BinMod.ahk">BinMod.ahk</a> script.)</p> <p><strong>Example 3:</strong> This example specifies the <a href="../Scripts.htm#mpress">Compression</a> to be used on a compiled script, if none is specified in the CLI or GUI. The default parameters normally used by the compiler are shown.</p><p>For MPRESS:</p> <pre><em>;@Ahk2Exe-PostExec "MPRESS.exe" "%A_WorkFileName%" -q -x, 0,, 1</em></pre> <p>For UPX:</p> <pre><em>;@Ahk2Exe-PostExec "UPX.exe" "%A_WorkFileName%" ;@Ahk2Exe-Cont -q --all-methods --compress-icons=0, 0,, 1</em></pre> <h3 id="ResourceID">ResourceID <span class="ver">[v1.1.34+]</span></h3> <p>Assigns a non-standard resource ID to be used for the main script for compilations which use an <a href="#Bin">.exe base file</a> (see <a href="../Program.htm#embedded-scripts">Embedded Scripts</a>). This directive may be overridden by a Resource ID specified in the GUI or CLI. This directive is ignored if it appears in a script inserted by the <a href="#AddResource">AddResource</a> directive.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-ResourceID</span> Name</pre> <dl> <dt>Nome</dt> <dd>The resource ID to use. Numeric resource IDs should consist of a hash sign (#) followed by a decimal number.</dd> </dl> <h3 id="SetMainIcon">SetMainIcon</h3> <p>Overrides the custom EXE icon used for compilation. (To change the other icons, see the <a href="#AddResource">AddResource</a> example.) This directive may be overridden by an icon file specified in the GUI or CLI. The new icon might not be immediately visible in Windows Explorer if the compiled file existed before with a different icon, however the new icon can be shown by selecting <code>Refresh Windows Icons</code> from the Ahk2Exe <code>File</code> menu.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-SetMainIcon</span> <span class="optional">IcoFile</span></pre> <dl> <dt>IcoFile</dt> <dd><i>(Optional)</i> The icon file to use. If omitted, the default AutoHotkey icon is used.</dd> </dl> <h3 id="SetProp">Set<em>Prop</em></h3> <p>Changes a property in the compiled executable's version information. Note that all properties are processed in alphabetical order, regardless of the order they are specified.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-Set<i>Prop</i></span> Value</pre> <dl> <dt><em>Prop</em></dt> <dd> <p>The name of the property to change. Must be one of those listed below.</p> <table class="info"> <tr> <th abbr="Prop">Property</th> <th abbr="Descr">Descrição</th> </tr> <tr> <td>CompanyName</td> <td>Changes the company name.</td> </tr> <tr> <td>Copyright</td> <td>Changes the legal copyright information.</td> </tr> <tr> <td>Descrição</td> <td>Changes the file description.</td> </tr> <tr> <td>FileVersion</td> <td>Changes the file version, in both text and raw binary format. (See <em>Version</em> below, for more details.)</td> </tr> <tr> <td>InternalName</td> <td>Changes the internal name.</td> </tr> <tr> <td>Language</td> <td>Changes the <a href="Languages.htm">language code</a>. Please note that hexadecimal numbers must have an <code>0x</code> prefix.</td> </tr> <tr> <td>LegalTrademarks</td> <td>Changes the legal trademarks information.</td> </tr> <tr> <td>Nome</td> <td>Changes the product name and the internal name.</td> </tr> <tr> <td>OrigFilename</td> <td>Changes the original filename information.</td> </tr> <tr> <td>ProductName</td> <td>Changes the product name.</td> </tr> <tr> <td>ProductVersion</td> <td>Changes the product version, in both text and raw binary format. (See <em>Version</em> below, for more details.)</td> </tr> <tr> <td>Versão</td> <td> <p>Changes the file version and the product version, in both text and raw binary format.</p> <p>Ahk2Exe fills the binary version fields with the period-delimited numbers (up to four) that may appear at the beginning of the version text. Unfilled fields are set to zero. For example, <code>1.3-alpha</code> would produce a binary version number of <code>1.3.0.0</code>. If this property is not modified, it defaults to the AutoHotkey version used to compile the script.</p> </td> </tr> </table> </dd> <dt>Value</dt> <dd>The value to set the property to.</dd> </dl> <h3 id="Set">Set</h3> <p>Changes other miscellaneous properties in the compiled executable's version information not covered by the <a href="#SetProp">SetProp</a> directive. Note that all properties are processed in alphabetical order, regardless of the order they are specified. This directive is for specialised use only.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-Set</span> Prop, Value</pre> <dl> <dt>Prop</dt> <dd>The name of the property to change.</dd> <dt>Value</dt> <dd>The value to set the property to.</dd> </dl> <h3 id="UpdateManifest">UpdateManifest</h3> <p>Changes details in the .exe's manifest. This directive is for specialised use only.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-UpdateManifest</span> RequireAdmin <span class="optional">, Name, Version, UIAccess</span></pre> <dl> <dt>RequireAdmin</dt> <dd>Set to 1 to change the executable to require administrative privileges when run. Set to 2 to change the executable to request highest available privileges when run. Set to 0 to leave unchanged.</dd> <dt>Nome</dt> <dd><i>(Optional)</i> The name to be set in the manifest.</dd> <dt>Versão</dt> <dd><i>(Optional)</i> The version to be set in the manifest.</dd> <dt>UIAccess</dt> <dd><i>(Optional)</i> Set to 1 to make UIAccess true in the manifest.</dd> </dl> <h3 id="UseResourceLang">UseResourceLang</h3> <p>Changes the resource language used by <a href="#AddResource">AddResource</a>. This directive is positional and affects all <a href="#AddResource">AddResource</a> directives that follow it.</p> <pre class="Syntax"><span class="func">;@Ahk2Exe-UseResourceLang</span> LangCode</pre> <dl> <dt>LangCode</dt> <dd>The <a href="Languages.htm">language code</a>. Please note that hexadecimal numbers must have an <code>0x</code> prefix. The default resource language is US English (0x0409).</dd> </dl> </body> </html>