Warning, file /frameworks/syntax-highlighting/autotests/html/highlight.ahk.html was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>highlight.ahk</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (AutoHotKey) - Theme (Breeze Light)"/>
0006 </head><body style="background-color:#ffffff;color:#1f1c1b"><pre>
0007 <span style="color:#644a9b;font-weight:bold;">^j</span><span style="color:#ca60ca;">::</span> <span style="color:#898887;">; hotkey label</span>
0008 <span style="color:#ca60ca;">::</span>ftw<span style="color:#ca60ca;">::</span>Free the whales <span style="color:#898887;">; hotstring label abbreviation</span>
0009 <span style="color:#ca60ca;">::</span>btw<span style="color:#ca60ca;">::</span> <span style="color:#898887;">; hotstring label action</span>
0010 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> You typed btw.
0011 <span style="color:#644a9b;font-weight:bold;">Run</span><span style="color:#ca60ca;">,</span> notepad.exe  <span style="color:#898887;">; Run Notepad when you press CTRL+N.</span>
0012 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> Wow<span style="color:#644a9b;font-weight:bold;">!</span>
0013 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> There are
0014 <span style="color:#644a9b;font-weight:bold;">Run</span><span style="color:#ca60ca;">,</span> notepad.exe
0015 <span style="color:#644a9b;font-weight:bold;">WinActivate</span><span style="color:#ca60ca;">,</span> Untitled - Notepad
0016 <span style="color:#644a9b;font-weight:bold;">WinWaitActive</span><span style="color:#ca60ca;">,</span> Untitled - Notepad
0017 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> 7 lines<span style="color:#ca60ca;">{</span>!<span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">Enter</span><span style="color:#ca60ca;">}</span>
0018 <span style="color:#644a9b;font-weight:bold;">SendInput</span><span style="color:#ca60ca;">,</span> inside the CTRL<span style="color:#ca60ca;">{</span>+<span style="color:#ca60ca;">}</span>J hotkey.
0019 <span style="font-weight:bold;">return</span>
0020 
0021 <span style="color:#644a9b;font-weight:bold;">Numpad0 &amp; Numpad1</span><span style="color:#ca60ca;">::</span>
0022 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> You pressed Numpad1 while holding down Numpad0.
0023 <span style="color:#644a9b;font-weight:bold;">Run</span><span style="color:#ca60ca;">,</span> notepad.exe
0024 <span style="font-weight:bold;">return</span>
0025 
0026 <span style="color:#898887;">; Untitled - Notepad</span>
0027 <span style="color:#aa5500;">#IfWinActive</span> Untitled - Notepad
0028 <span style="color:#644a9b;font-weight:bold;">!q</span><span style="color:#ca60ca;">::</span>
0029 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> You pressed ALT<span style="color:#644a9b;font-weight:bold;">+Q</span> in Notepad.
0030 <span style="font-weight:bold;">return</span>
0031 
0032 <span style="color:#898887;">; Any window that isn't Untitled - Notepad</span>
0033 <span style="color:#aa5500;">#IfWinActive</span>
0034 <span style="color:#644a9b;font-weight:bold;">!q</span><span style="color:#ca60ca;">::</span>
0035 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> You pressed ALT<span style="color:#644a9b;font-weight:bold;">+Q</span> in any window.
0036 <span style="font-weight:bold;">return</span>
0037 
0038 <span style="color:#898887;">; Retrieve the ID/HWND of the active window</span>
0039 <span style="font-weight:bold;">id</span> <span style="color:#ca60ca;">:=</span> <span style="color:#644a9b;">WinExist</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;A&quot;</span><span style="color:#ca60ca;">)</span>
0040 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="font-weight:bold;">id</span>
0041 
0042 <span style="color:#898887;">; Press Win+↑ to maximize the active window</span>
0043 <span style="color:#644a9b;font-weight:bold;">#Up</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">WinMaximize</span><span style="color:#ca60ca;">,</span> A
0044 
0045 <span style="color:#644a9b;font-weight:bold;">#i</span><span style="color:#ca60ca;">::</span>
0046 <span style="color:#644a9b;font-weight:bold;">Run</span><span style="color:#ca60ca;">,</span> https://www.google.com/
0047 <span style="font-weight:bold;">return</span>
0048 
0049 <span style="color:#644a9b;font-weight:bold;">^p</span><span style="color:#ca60ca;">::</span>
0050 <span style="color:#644a9b;font-weight:bold;">Run</span><span style="color:#ca60ca;">,</span> notepad.exe
0051 <span style="font-weight:bold;">return</span>
0052 
0053 <span style="color:#644a9b;font-weight:bold;">~j</span><span style="color:#ca60ca;">::</span>
0054 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> ack
0055 <span style="font-weight:bold;">return</span>
0056 
0057 <span style="color:#ca60ca;">:*:</span>acheiv<span style="color:#ca60ca;">::</span>achiev
0058 <span style="color:#ca60ca;">::</span>achievment<span style="color:#ca60ca;">::</span>achievement
0059 <span style="color:#ca60ca;">::</span>acquaintence<span style="color:#ca60ca;">::</span>acquaintance
0060 <span style="color:#ca60ca;">:*:</span>adquir<span style="color:#ca60ca;">::</span>acquir
0061 <span style="color:#ca60ca;">::</span>aquisition<span style="color:#ca60ca;">::</span>acquisition
0062 <span style="color:#ca60ca;">:*:</span>agravat<span style="color:#ca60ca;">::</span>aggravat
0063 <span style="color:#ca60ca;">:*:</span>allign<span style="color:#ca60ca;">::</span>align
0064 <span style="color:#ca60ca;">::</span>ameria<span style="color:#ca60ca;">::</span>America
0065 <span style="color:#ca60ca;">:*:</span>ftw<span style="color:#ca60ca;">::</span>Free the whales <span style="color:#898887;">; Hotstring modifiers</span>
0066 this_is_a_label: <span style="color:#898887;">; label</span>
0067 
0068 <span style="color:#aa5500;">#IfWinActive</span> Untitled - Notepad
0069 <span style="color:#644a9b;font-weight:bold;">#Space</span><span style="color:#ca60ca;">::</span>
0070 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> You pressed WIN<span style="color:#644a9b;font-weight:bold;">+SPACE</span> in Notepad.
0071 <span style="font-weight:bold;">return</span>
0072 
0073 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Ctrl down</span><span style="color:#ca60ca;">}</span>c<span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Ctrl up</span><span style="color:#ca60ca;">}</span>
0074 <span style="color:#644a9b;font-weight:bold;">SendInput</span><span style="color:#ca60ca;">,</span> [b]<span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Ctrl down</span><span style="color:#ca60ca;">}</span>v<span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Ctrl up</span><span style="color:#ca60ca;">}</span>[/b]
0075 <span style="font-weight:bold;">return</span>  <span style="color:#898887;">; This ends the hotkey. The code below this point will not get triggered.</span>
0076 
0077 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> This text has been typed<span style="color:#ca60ca;">{</span>!<span style="color:#ca60ca;">}</span>
0078 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">a</span><span style="color:#ca60ca;">}</span>       <span style="color:#898887;">; WRONG</span>
0079 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">a</span><span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">b</span><span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">c</span><span style="color:#ca60ca;">}</span> <span style="color:#898887;">; WRONG</span>
0080 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">abc</span><span style="color:#ca60ca;">}</span>     <span style="color:#898887;">; WRONG</span>
0081 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> abc       <span style="color:#898887;">; CORRECT</span>
0082 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#644a9b;font-weight:bold;">^s</span>                     <span style="color:#898887;">; Both of these send CTRL+S</span>
0083 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Ctrl down</span><span style="color:#ca60ca;">}</span>s<span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Ctrl up</span><span style="color:#ca60ca;">}</span>  <span style="color:#898887;">; Both of these send CTRL+S</span>
0084 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Ctrl down</span><span style="color:#ca60ca;">}</span>c<span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Ctrl up</span><span style="color:#ca60ca;">}</span>
0085 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">b down</span><span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">b up</span><span style="color:#ca60ca;">}</span>
0086 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Tab down</span><span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">Tab up</span><span style="color:#ca60ca;">}</span>
0087 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Up down</span><span style="color:#ca60ca;">}</span>  <span style="color:#898887;">; Press down the up-arrow key.</span>
0088 <span style="font-weight:bold;">Sleep</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">1000</span>      <span style="color:#898887;">; Keep it down for one second.</span>
0089 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Up up</span><span style="color:#ca60ca;">}</span>    <span style="color:#898887;">; Release the up-arrow key.</span>
0090 
0091 <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span>
0092 <span style="color:#ca60ca;">(</span>
0093 Line 1
0094 Line 2
0095 Apples are a fruit.
0096 <span style="color:#ca60ca;">)</span>
0097 
0098 <span style="color:#644a9b;font-weight:bold;">Send</span> <span style="color:#0057ae;">%A_Hour%</span>
0099 <span style="color:#644a9b;">SubStr</span><span style="color:#ca60ca;">(</span><span style="color:#b08000;">37</span> <span style="color:#ca60ca;">*</span> <span style="color:#b08000;">12</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">1</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">2</span><span style="color:#ca60ca;">)</span>
0100 <span style="color:#644a9b;">SubStr</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">A_Hour</span> <span style="color:#ca60ca;">-</span> <span style="color:#b08000;">12</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">2</span><span style="color:#ca60ca;">)</span>
0101 <span style="color:#644a9b;">SubStr</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">A_AhkPath</span><span style="color:#ca60ca;">,</span> <span style="color:#644a9b;">InStr</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">A_AhkPath</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;AutoHotkey&quot;</span><span style="color:#ca60ca;">))</span>
0102 <span style="color:#644a9b;">SubStr</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;I'm scripting, awesome!&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">16</span><span style="color:#ca60ca;">)</span>
0103 
0104 <span style="color:#644a9b;font-weight:bold;">SetTitleMatchMode</span> RegEx
0105 <span style="color:#644a9b;font-weight:bold;">WinActivate</span> ahk_exe i<span style="color:#ca60ca;">)</span><span style="color:#3daee9;">\\</span><span style="color:#ff5500;">notepad</span><span style="color:#3daee9;">\.</span><span style="color:#ff5500;">exe</span><span style="color:#ca60ca;">$</span>  <span style="color:#898887;">; Match the name part of the full path.</span>
0106 <span style="color:#644a9b;font-weight:bold;">WinActivate</span> ahk_exe im<span style="color:#ca60ca;">)(*</span><span style="color:#ff5500;">BSR_ANYCRLF</span><span style="color:#ca60ca;">)</span><span style="color:#ff5500;">abc</span><span style="color:#3daee9;">\R</span><span style="color:#ff5500;">xyz</span>
0107 <span style="color:#644a9b;font-weight:bold;">WinActivate</span> ahk_exe im<span style="color:#ca60ca;">)(*</span><span style="color:#ff5500;">BSR_ANY</span><span style="color:#ca60ca;">[^</span><span style="color:#ff5500;">]</span><span style="color:#ca60ca;">]</span><span style="color:#ff5500;">CRLF</span><span style="color:#ca60ca;">)</span><span style="color:#ff5500;">abc</span><span style="color:#3daee9;">\R</span><span style="color:#ff5500;">xyz</span>
0108 
0109 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">MyVar</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">5</span><span style="color:#ca60ca;">)</span>
0110 <span style="color:#ca60ca;">{</span>
0111     <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> MyVar equals <span style="color:#0057ae;">%MyVar%</span><span style="color:#644a9b;font-weight:bold;">!!</span>
0112     <span style="font-weight:bold;">ExitApp</span>
0113 <span style="color:#ca60ca;">}</span>
0114 
0115 MyVar <span style="color:#ca60ca;">=</span> Text
0116 MyVar <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">%MyVar2%</span>
0117 MyVar <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">%MyVar2%</span> some text <span style="color:#0057ae;">%MyVar3%</span>.
0118 MyVar <span style="color:#ca60ca;">:=</span> <span style="color:#644a9b;">SubStr</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;I'm scripting, awesome!&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">16</span><span style="color:#ca60ca;">)</span>
0119 MyVar <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;Text&quot;</span>
0120 MyVar <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">MyVar2</span>
0121 MyVar <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">6</span> <span style="color:#ca60ca;">+</span> <span style="color:#b08000;">8</span> <span style="color:#ca60ca;">/</span> <span style="color:#b08000;">3</span> <span style="color:#ca60ca;">*</span> <span style="color:#b08000;">2</span> <span style="color:#ca60ca;">-</span> <span style="color:#644a9b;">Sqrt</span><span style="color:#ca60ca;">(</span><span style="color:#b08000;">9</span><span style="color:#ca60ca;">)</span>
0122 MyVar <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;The value of 5 + &quot;</span> <span style="color:#0057ae;">MyVar2</span> <span style="color:#bf0303;">&quot; is: &quot;</span> <span style="color:#b08000;">5</span> <span style="color:#ca60ca;">+</span> <span style="color:#0057ae;">MyVar2</span>
0123 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">Var1</span> <span style="color:#ca60ca;">!=</span> <span style="color:#0057ae;">Var2</span><span style="color:#ca60ca;">)</span>
0124     Var1 <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">Var2</span> <span style="color:#ca60ca;">+</span> <span style="color:#b08000;">100</span>
0125 
0126 <span style="color:#898887;">; Some examples showing when to use percents and when not:</span>
0127 Var <span style="color:#ca60ca;">=</span> Text  <span style="color:#898887;">; Assign some text to a variable (legacy).</span>
0128 <span style="font-weight:bold;">Number</span> <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">6</span>  <span style="color:#898887;">; Assign a number to a variable (expression).</span>
0129 Var2 <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">%Var%</span>  <span style="color:#898887;">; Assign a variable to another (legacy).</span>
0130 Var3 <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">Var</span>  <span style="color:#898887;">; Assign a variable to another (expression).</span>
0131 Var4 <span style="color:#ca60ca;">.=</span> Var  <span style="color:#898887;">; Append a variable to the end of another (expression).</span>
0132 Var5 <span style="color:#ca60ca;">+=</span> <span style="color:#0057ae;">Var</span>  <span style="color:#898887;">; Add the value of a variable to another (expression).</span>
0133 Var5 <span style="color:#ca60ca;">-=</span> <span style="color:#0057ae;">Var</span>  <span style="color:#898887;">; Subtract the value of a variable from another (expression).</span>
0134 Var6 <span style="color:#ca60ca;">:=</span> <span style="color:#644a9b;">SubStr</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">Var</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">2</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">2</span><span style="color:#ca60ca;">)</span>  <span style="color:#898887;">; Variable inside a function. This is always an expression.</span>
0135 Var7 <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">%Var%</span> Text  <span style="color:#898887;">; Assigns a variable to another with some extra text (legacy).</span>
0136 Var8 <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">Var</span> <span style="color:#bf0303;">&quot; Text&quot;</span>  <span style="color:#898887;">; Assigns a variable to another with some extra text (expression).</span>
0137 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">%Var%</span>  <span style="color:#898887;">; Variable inside a command.</span>
0138 <span style="color:#644a9b;font-weight:bold;">StringSplit</span><span style="color:#ca60ca;">,</span> Var<span style="color:#ca60ca;">,</span> Var<span style="color:#ca60ca;">,</span> x  <span style="color:#898887;">; Variable inside a command that uses InputVar and OutputVar.</span>
0139 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="font-weight:bold;">Number</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">6</span><span style="color:#ca60ca;">)</span>  <span style="color:#898887;">; Whenever an IF has parentheses, it'll be an expression. So no percent signs.</span>
0140 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">Var</span> <span style="color:#ca60ca;">!=</span> <span style="font-weight:bold;">Number</span><span style="color:#ca60ca;">)</span>  <span style="color:#898887;">; Whenever an IF has parentheses, it'll be an expression. So no percent signs.</span>
0141 <span style="font-weight:bold;">if</span> <span style="font-weight:bold;">Number</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">6</span>  <span style="color:#898887;">; Without parentheses, the IF is legacy. However, only variables on the 'right side' need percent signs.</span>
0142 <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">Var1</span> <span style="color:#ca60ca;">&lt;</span> <span style="color:#0057ae;">%Var2%</span>  <span style="color:#898887;">; Without parentheses, the IF is legacy. However, only variables on the 'right side' need percent signs.</span>
0143 
0144 MyObject <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">[</span><span style="color:#bf0303;">&quot;one&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;two&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;three&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">17</span><span style="color:#ca60ca;">]</span>
0145 Banana <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{</span><span style="color:#bf0303;">&quot;Color&quot;</span><span style="color:#ca60ca;">:</span> <span style="color:#bf0303;">&quot;Yellow&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;Taste&quot;</span><span style="color:#ca60ca;">:</span> <span style="color:#bf0303;">&quot;Delicious&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;Price&quot;</span><span style="color:#ca60ca;">:</span> <span style="color:#b08000;">3</span><span style="color:#ca60ca;">}</span>
0146 MyObject <span style="color:#ca60ca;">:=</span> <span style="color:#644a9b;">Array</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;one&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;two&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;three&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">17</span><span style="color:#ca60ca;">)</span>
0147 Banana <span style="color:#ca60ca;">:=</span> <span style="color:#644a9b;">Object</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;Color&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;Yellow&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;Taste&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;Delicious&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;Price&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">3</span><span style="color:#ca60ca;">)</span>
0148 Banana<span style="color:#ca60ca;">[</span><span style="color:#bf0303;">&quot;Pickled&quot;</span><span style="color:#ca60ca;">]</span> <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">True</span> <span style="color:#898887;">; This banana has been pickled. Eww.</span>
0149 Banana<span style="color:#ca60ca;">.</span>Consistency <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;Mushy&quot;</span>
0150 Value <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">Banana</span><span style="color:#ca60ca;">[</span><span style="color:#bf0303;">&quot;Color&quot;</span><span style="color:#ca60ca;">]</span>
0151 Value <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">Banana</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">Color</span>
0152 MyObject<span style="color:#ca60ca;">[</span><span style="color:#bf0303;">&quot;NewerKey&quot;</span><span style="color:#ca60ca;">]</span> <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">3.1415</span>
0153 MyObject<span style="color:#ca60ca;">.</span>NewKey <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;Shiny&quot;</span>
0154 MyObject<span style="color:#ca60ca;">.</span>Push<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">Value1</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Value2</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Value3</span><span style="color:#ca60ca;">...)</span>
0155 Banana<span style="color:#ca60ca;">.</span>Consistency <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0156 RemovedValue <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">MyObject</span><span style="color:#ca60ca;">.</span><span style="color:#644a9b;font-weight:bold;">Delete</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">AnyKey</span><span style="color:#ca60ca;">)</span>
0157 NumberOfRemovedKeys <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">MyObject</span><span style="color:#ca60ca;">.</span><span style="color:#644a9b;font-weight:bold;">Delete</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">FirstKey</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">LastKey</span><span style="color:#ca60ca;">)</span>
0158 arr <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">[{}]</span>  <span style="color:#898887;">; Creates an array containing an object.</span>
0159 arr<span style="color:#ca60ca;">[</span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">]</span> <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{}</span>  <span style="color:#898887;">; Creates a second object, implicitly freeing the first object.</span>
0160 arr<span style="color:#ca60ca;">.</span>RemoveAt<span style="color:#ca60ca;">(</span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">)</span>  <span style="color:#898887;">; Removes and frees the second object.</span>
0161 x <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{},</span> y <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{}</span>             <span style="color:#898887;">; Create two objects.</span>
0162 x<span style="color:#ca60ca;">.</span>child <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">y</span><span style="color:#ca60ca;">,</span> y<span style="color:#ca60ca;">.</span>parent <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">x</span>  <span style="color:#898887;">; Create a circular reference.</span>
0163 y<span style="color:#ca60ca;">.</span>parent <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0164 x <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;&quot;</span><span style="color:#ca60ca;">,</span> y <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0165 table<span style="color:#ca60ca;">.</span>base<span style="color:#ca60ca;">.</span>__Get<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">table</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">x</span><span style="color:#ca60ca;">)[</span><span style="color:#0057ae;">y</span><span style="color:#ca60ca;">]</span> <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">content</span>   <span style="color:#898887;">; A</span>
0166 table<span style="color:#ca60ca;">.</span>base<span style="color:#ca60ca;">.</span>__Set<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">table</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">x</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">y</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">content</span><span style="color:#ca60ca;">)</span>     <span style="color:#898887;">; B</span>
0167 RemovedValue <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">MyObject</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">RemoveAt</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">Index</span><span style="color:#ca60ca;">)</span>
0168 NumberOfRemovedKeys <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">MyObject</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">RemoveAt</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">Index</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Length</span><span style="color:#ca60ca;">)</span>
0169 val <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">obj</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">Property</span> <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">42</span>
0170 m1 <span style="color:#ca60ca;">:=</span> <span style="font-weight:bold;">new</span> <span style="color:#0057ae;">GMem</span><span style="color:#ca60ca;">(</span><span style="color:#b08000;">0</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">20</span><span style="color:#ca60ca;">)</span>
0171 m2 <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{</span><span style="font-weight:bold;">base</span><span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">GMem</span><span style="color:#ca60ca;">}.</span><span style="font-weight:bold;">__New</span><span style="color:#ca60ca;">(</span><span style="color:#b08000;">0</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">30</span><span style="color:#ca60ca;">)</span>
0172 x <span style="color:#ca60ca;">?</span> <span style="color:#0057ae;">CallIfTrue</span><span style="color:#ca60ca;">()</span> <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">CallIfFalse</span><span style="color:#ca60ca;">()</span>
0173 ProductIsAvailable <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">(</span><span style="font-weight:bold;">Color</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;Red&quot;</span><span style="color:#ca60ca;">)</span>
0174     <span style="color:#ca60ca;">?</span> <span style="color:#0057ae;">false</span>  <span style="color:#898887;">; We don't have any red products, so don't bother calling the function.</span>
0175     <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">ProductIsAvailableInColor</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">Product</span><span style="color:#ca60ca;">,</span> <span style="font-weight:bold;">Color</span><span style="color:#ca60ca;">)</span>
0176 MyObject<span style="color:#ca60ca;">.</span>Pop<span style="color:#ca60ca;">()</span>
0177 <span style="color:#0057ae;">%Var%</span><span style="color:#ca60ca;">()</span>
0178 
0179 <span style="font-weight:bold;">Sleep</span> <span style="color:#0057ae;">MillisecondsToWait</span>
0180 <span style="font-weight:bold;">Sleep</span> <span style="color:#0057ae;">%MillisecondsToWait%</span>
0181 <span style="font-weight:bold;">Sleep</span> <span style="color:#0057ae;">%</span> <span style="color:#0057ae;">MillisecondsToWait</span>
0182 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">+</span><span style="color:#b08000;">1</span>  <span style="color:#898887;">; Shows &quot;2&quot;</span>
0183 <span style="color:#644a9b;font-weight:bold;">MsgBox</span>   1<span style="color:#644a9b;font-weight:bold;">+</span>1  <span style="color:#898887;">; Shows &quot;1+1&quot;</span>
0184 
0185 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#bf0303;">&quot;This is text.&quot;</span>
0186 <span style="color:#644a9b;font-weight:bold;">MsgBox</span>    This is text.
0187 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span> <span style="color:#0057ae;">A_AhkVersion</span>
0188 <span style="color:#644a9b;font-weight:bold;">MsgBox</span>   <span style="color:#0057ae;">%A_AhkVersion%</span>
0189 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#0057ae;">%A_AhkVersion%</span>
0190 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#bf0303;">&quot;Hello %A_UserName%.&quot;</span>  <span style="color:#898887;">; Shows &quot;%A_UserName%&quot;</span>
0191 <span style="color:#644a9b;font-weight:bold;">MsgBox</span>    Hello <span style="color:#0057ae;">%A_UserName%</span>.   <span style="color:#898887;">; Shows your username.</span>
0192 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#bf0303;">&quot;Hello &quot;</span> <span style="color:#ca60ca;">.</span> <span style="color:#0057ae;">A_UserName</span> <span style="color:#ca60ca;">.</span> <span style="color:#bf0303;">&quot;.&quot;</span>  <span style="color:#898887;">; Shows your username.</span>
0193 MyVar <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;This is text.&quot;</span>
0194 MyVar <span style="color:#ca60ca;">=</span> This is text.
0195 
0196 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">Var1</span> <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">Var2</span><span style="color:#ca60ca;">)</span>
0197 <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">Var1</span> <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">%Var2%</span>
0198 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">Var1</span> <span style="color:#ca60ca;">&gt;=</span> <span style="font-weight:bold;">Low</span> <span style="font-weight:bold;">and</span> <span style="color:#0057ae;">Var1</span> <span style="color:#ca60ca;">&lt;=</span> <span style="font-weight:bold;">High</span><span style="color:#ca60ca;">)</span>
0199 <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">Var1</span> <span style="font-weight:bold;">between</span> <span style="color:#0057ae;">%Low%</span> <span style="font-weight:bold;">and</span> <span style="color:#0057ae;">%High%</span>
0200 
0201 <span style="color:#644a9b;">Format</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;{:L}{:U}{:T}&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#644a9b;font-weight:bold;">input</span><span style="color:#ca60ca;">,</span> <span style="color:#644a9b;font-weight:bold;">input</span><span style="color:#ca60ca;">,</span> <span style="color:#644a9b;font-weight:bold;">input</span><span style="color:#ca60ca;">)</span>
0202 
0203 <span style="color:#644a9b;font-weight:bold;">*#up</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">MouseMove</span><span style="color:#ca60ca;">,</span> 0<span style="color:#ca60ca;">,</span> -10<span style="color:#ca60ca;">,</span> 0<span style="color:#ca60ca;">,</span> R  <span style="color:#898887;">; Win+UpArrow hotkey =&gt; Move cursor upward</span>
0204 <span style="color:#644a9b;font-weight:bold;">*#Down</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">MouseMove</span><span style="color:#ca60ca;">,</span> 0<span style="color:#ca60ca;">,</span> 10<span style="color:#ca60ca;">,</span> 0<span style="color:#ca60ca;">,</span> R  <span style="color:#898887;">; Win+DownArrow =&gt; Move cursor downward</span>
0205 <span style="color:#644a9b;font-weight:bold;">*#Left</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">MouseMove</span><span style="color:#ca60ca;">,</span> -10<span style="color:#ca60ca;">,</span> 0<span style="color:#ca60ca;">,</span> 0<span style="color:#ca60ca;">,</span> R  <span style="color:#898887;">; Win+LeftArrow =&gt; Move cursor to the left</span>
0206 <span style="color:#644a9b;font-weight:bold;">*#Right</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">MouseMove</span><span style="color:#ca60ca;">,</span> 10<span style="color:#ca60ca;">,</span> 0<span style="color:#ca60ca;">,</span> 0<span style="color:#ca60ca;">,</span> R  <span style="color:#898887;">; Win+RightArrow =&gt; Move cursor to the right</span>
0207 
0208 <span style="color:#644a9b;font-weight:bold;">*&lt;#RCtrl</span><span style="color:#ca60ca;">::</span>  <span style="color:#898887;">; LeftWin + RightControl =&gt; Left-click (hold down Control/Shift to Control-Click or Shift-Click).</span>
0209 <span style="color:#644a9b;font-weight:bold;">SendEvent</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Blind</span><span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">LButton down</span><span style="color:#ca60ca;">}</span>
0210 <span style="color:#644a9b;font-weight:bold;">KeyWait</span> RCtrl  <span style="color:#898887;">; Prevents keyboard auto-repeat from repeating the mouse click.</span>
0211 <span style="color:#644a9b;font-weight:bold;">SendEvent</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Blind</span><span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">LButton up</span><span style="color:#ca60ca;">}</span>
0212 <span style="font-weight:bold;">return</span>
0213 
0214 <span style="color:#644a9b;font-weight:bold;">*&lt;#AppsKey</span><span style="color:#ca60ca;">::</span>  <span style="color:#898887;">; LeftWin + AppsKey =&gt; Right-click</span>
0215 <span style="color:#644a9b;font-weight:bold;">SendEvent</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Blind</span><span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">RButton down</span><span style="color:#ca60ca;">}</span>
0216 <span style="color:#644a9b;font-weight:bold;">KeyWait</span> AppsKey  <span style="color:#898887;">; Prevents keyboard auto-repeat from repeating the mouse click.</span>
0217 <span style="color:#644a9b;font-weight:bold;">SendEvent</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Blind</span><span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">RButton up</span><span style="color:#ca60ca;">}</span>
0218 <span style="font-weight:bold;">return</span>
0219 
0220 <span style="color:#aa5500;">#Persistent</span>  <span style="color:#898887;">; Keep this script running until the user explicitly exits it.</span>
0221 <span style="font-weight:bold;">SetTimer</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">WatchPOV</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">5</span>
0222 <span style="font-weight:bold;">return</span>
0223 
0224 WatchPOV:
0225 POV <span style="color:#ca60ca;">:=</span> <span style="color:#644a9b;font-weight:bold;">GetKeyState</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;JoyPOV&quot;</span><span style="color:#ca60ca;">)</span>  <span style="color:#898887;">; Get position of the POV control.</span>
0226 KeyToHoldDownPrev <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">KeyToHoldDown</span>  <span style="color:#898887;">; Prev now holds the key that was down before (if any).</span>
0227 
0228 <span style="color:#898887;">; Some joysticks might have a smooth/continous POV rather than one in fixed increments.</span>
0229 <span style="color:#898887;">; To support them all, use a range:</span>
0230 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">POV</span> <span style="color:#ca60ca;">&lt;</span> <span style="color:#b08000;">0</span><span style="color:#ca60ca;">)</span>   <span style="color:#898887;">; No angle to report</span>
0231     KeyToHoldDown <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0232 <span style="font-weight:bold;">else</span> <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">POV</span> <span style="color:#ca60ca;">&gt;</span> <span style="color:#b08000;">31500</span><span style="color:#ca60ca;">)</span>               <span style="color:#898887;">; 315 to 360 degrees: Forward</span>
0233     KeyToHoldDown <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;Up&quot;</span>
0234 <span style="font-weight:bold;">else</span> <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">POV</span> <span style="font-weight:bold;">between</span> <span style="color:#b08000;">0</span> <span style="font-weight:bold;">and</span> <span style="color:#b08000;">4500</span>      <span style="color:#898887;">; 0 to 45 degrees: Forward</span>
0235     KeyToHoldDown <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;Up&quot;</span>
0236 <span style="font-weight:bold;">else</span> <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">POV</span> <span style="font-weight:bold;">between</span> <span style="color:#b08000;">4501</span> <span style="font-weight:bold;">and</span> <span style="color:#b08000;">13500</span>  <span style="color:#898887;">; 45 to 135 degrees: Right</span>
0237     KeyToHoldDown <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;Right&quot;</span>
0238 <span style="font-weight:bold;">else</span> <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">POV</span> <span style="font-weight:bold;">between</span> <span style="color:#b08000;">13501</span> <span style="font-weight:bold;">and</span> <span style="color:#b08000;">22500</span> <span style="color:#898887;">; 135 to 225 degrees: Down</span>
0239     KeyToHoldDown <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;Down&quot;</span>
0240 <span style="font-weight:bold;">else</span>                                <span style="color:#898887;">; 225 to 315 degrees: Left</span>
0241     KeyToHoldDown <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;Left&quot;</span>
0242 
0243 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">KeyToHoldDown</span> <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">KeyToHoldDownPrev</span><span style="color:#ca60ca;">)</span>  <span style="color:#898887;">; The correct key is already down (or no key is needed).</span>
0244     <span style="font-weight:bold;">return</span>  <span style="color:#898887;">; Do nothing.</span>
0245 
0246 <span style="color:#898887;">; Otherwise, release the previous key and press down the new key:</span>
0247 <span style="color:#644a9b;font-weight:bold;">SetKeyDelay</span> -1  <span style="color:#898887;">; Avoid delays between keystrokes.</span>
0248 <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">KeyToHoldDownPrev</span>   <span style="color:#898887;">; There is a previous key to release.</span>
0249     <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">%KeyToHoldDownPrev% up</span><span style="color:#ca60ca;">}</span>  <span style="color:#898887;">; Release it.</span>
0250 <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">KeyToHoldDown</span>   <span style="color:#898887;">; There is a key to press down.</span>
0251     <span style="color:#644a9b;font-weight:bold;">Send</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">%KeyToHoldDown% down</span><span style="color:#ca60ca;">}</span>  <span style="color:#898887;">; Press it down.</span>
0252 <span style="font-weight:bold;">return</span>
0253 
0254 <span style="color:#644a9b;font-weight:bold;">&lt;^&gt;!m</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">MsgBox</span> You pressed AltGr<span style="color:#644a9b;font-weight:bold;">+m</span>.
0255 <span style="color:#644a9b;font-weight:bold;">&lt;^&lt;!m</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">MsgBox</span> You pressed LeftControl<span style="color:#644a9b;font-weight:bold;">+LeftAlt+m</span>.
0256 
0257 <span style="color:#644a9b;font-weight:bold;">AppsKey</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">ToolTip</span> Press <span style="color:#644a9b;font-weight:bold;">&lt;</span> or <span style="color:#644a9b;font-weight:bold;">&gt;</span> to cycle through windows.
0258 <span style="color:#644a9b;font-weight:bold;">AppsKey Up</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">ToolTip</span>
0259 <span style="color:#644a9b;font-weight:bold;">~AppsKey &amp; &lt;</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">Send</span> <span style="color:#644a9b;font-weight:bold;">!+</span><span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Esc</span><span style="color:#ca60ca;">}</span>
0260 <span style="color:#644a9b;font-weight:bold;">~AppsKey &amp; &gt;</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">Send</span> <span style="color:#644a9b;font-weight:bold;">!</span><span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Esc</span><span style="color:#ca60ca;">}</span>
0261 
0262 <span style="color:#898887;">; Press AppsKey and Alt in any order, then slash (/).</span>
0263 <span style="color:#aa5500;">#if</span> <span style="color:#644a9b;font-weight:bold;">GetKeyState</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;AppsKey&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;P&quot;</span><span style="color:#ca60ca;">)</span>
0264 <span style="color:#644a9b;font-weight:bold;">Alt &amp; /</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">MsgBox</span> Hotkey activated.
0265 
0266 <span style="color:#898887;">; If the keys are swapped, Alt must be pressed first (use one at a time):</span>
0267 <span style="color:#aa5500;">#if</span> <span style="color:#644a9b;font-weight:bold;">GetKeyState</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;Alt&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;P&quot;</span><span style="color:#ca60ca;">)</span>
0268 <span style="color:#644a9b;font-weight:bold;">AppsKey &amp; /</span><span style="color:#ca60ca;">::</span><span style="color:#644a9b;font-weight:bold;">MsgBox</span> Hotkey activated.
0269 
0270 <span style="color:#898887;">; [ &amp; ] &amp; \::</span>
0271 <span style="color:#aa5500;">#if</span> <span style="color:#644a9b;font-weight:bold;">GetKeyState</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;[&quot;</span><span style="color:#ca60ca;">)</span> &amp;&amp; <span style="color:#644a9b;font-weight:bold;">GetKeyState</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;]&quot;</span><span style="color:#ca60ca;">)</span>
0272 \::<span style="color:#644a9b;font-weight:bold;">MsgBox</span>
0273 
0274 <span style="color:#898887;">; Ctrl+Shift+O to open containing folder in Explorer.</span>
0275 <span style="color:#898887;">; Ctrl+Shift+E to open folder with current file selected.</span>
0276 <span style="color:#898887;">; Supports SciTE and Notepad++.</span>
0277 <span style="color:#644a9b;font-weight:bold;">^+o</span><span style="color:#ca60ca;">::</span>
0278 <span style="color:#644a9b;font-weight:bold;">^+e</span><span style="color:#ca60ca;">::</span>
0279     editor_open_folder<span style="color:#ca60ca;">()</span> <span style="color:#ca60ca;">{</span>
0280         <span style="color:#644a9b;font-weight:bold;">WinGetTitle</span><span style="color:#ca60ca;">,</span> path<span style="color:#ca60ca;">,</span> A
0281         <span style="font-weight:bold;">if</span> <span style="color:#644a9b;">RegExMatch</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">path</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;\*?\K(.*)\\[^\\]+(?= [-*] )&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">path</span><span style="color:#ca60ca;">)</span>
0282             <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#644a9b;">FileExist</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">path</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">&amp;&amp;</span> <span style="color:#0057ae;">A_ThisHotkey</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;^+e&quot;</span><span style="color:#ca60ca;">)</span>
0283                 <span style="color:#644a9b;font-weight:bold;">Run</span> explorer.exe /select<span style="color:#3daee9;">`,</span>&quot;<span style="color:#0057ae;">%path%</span>&quot;
0284             <span style="font-weight:bold;">else</span>
0285                 <span style="color:#644a9b;font-weight:bold;">Run</span> explorer.exe &quot;<span style="color:#0057ae;">%path1%</span>&quot;
0286     <span style="color:#ca60ca;">}</span>
0287 
0288 <span style="color:#644a9b;font-weight:bold;">#h</span><span style="color:#ca60ca;">::</span>  <span style="color:#898887;">; Win+H hotkey</span>
0289 <span style="color:#898887;">; Get the text currently selected. The clipboard is used instead of</span>
0290 <span style="color:#898887;">; &quot;ControlGet Selected&quot; because it works in a greater variety of editors</span>
0291 <span style="color:#898887;">; (namely word processors).  Save the current clipboard contents to be</span>
0292 <span style="color:#898887;">; restored later. Although this handles only plain text, it seems better</span>
0293 <span style="color:#898887;">; than nothing:</span>
0294 <span style="color:#644a9b;font-weight:bold;">AutoTrim</span> Off  <span style="color:#898887;">; Retain any leading and trailing whitespace on the clipboard.</span>
0295 ClipboardOld <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">ClipboardAll</span>
0296 <span style="color:#0057ae;">Clipboard</span> <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;&quot;</span>  <span style="color:#898887;">; Must start off blank for detection to work.</span>
0297 <span style="color:#644a9b;font-weight:bold;">Send</span> <span style="color:#644a9b;font-weight:bold;">^c</span>
0298 <span style="color:#644a9b;font-weight:bold;">ClipWait</span> 1
0299 <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">ErrorLevel</span>  <span style="color:#898887;">; ClipWait timed out.</span>
0300     <span style="font-weight:bold;">return</span>
0301 <span style="color:#898887;">; Replace CRLF and/or LF with `n for use in a &quot;send-raw&quot; hotstring:</span>
0302 <span style="color:#898887;">; The same is done for any other characters that might otherwise</span>
0303 <span style="color:#898887;">; be a problem in raw mode:</span>
0304 <span style="color:#644a9b;font-weight:bold;">StringReplace</span><span style="color:#ca60ca;">,</span> Hotstring<span style="color:#ca60ca;">,</span> Clipboard<span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">``</span><span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">````</span><span style="color:#ca60ca;">,</span> All  <span style="color:#898887;">; Do this replacement first to avoid interfering with the others below.</span>
0305 <span style="color:#644a9b;font-weight:bold;">StringReplace</span><span style="color:#ca60ca;">,</span> Hotstring<span style="color:#ca60ca;">,</span> Hotstring<span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">`r`n</span><span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">``</span>r<span style="color:#ca60ca;">,</span> All  <span style="color:#898887;">; Using `r works better than `n in MS Word, etc.</span>
0306 <span style="color:#644a9b;font-weight:bold;">StringReplace</span><span style="color:#ca60ca;">,</span> Hotstring<span style="color:#ca60ca;">,</span> Hotstring<span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">`n</span><span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">``</span>r<span style="color:#ca60ca;">,</span> All
0307 <span style="color:#644a9b;font-weight:bold;">StringReplace</span><span style="color:#ca60ca;">,</span> Hotstring<span style="color:#ca60ca;">,</span> Hotstring<span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">%A_Tab%</span><span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">``</span>t<span style="color:#ca60ca;">,</span> All
0308 <span style="color:#644a9b;font-weight:bold;">StringReplace</span><span style="color:#ca60ca;">,</span> Hotstring<span style="color:#ca60ca;">,</span> Hotstring<span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">`;</span><span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">```;</span><span style="color:#ca60ca;">,</span> All
0309 <span style="color:#0057ae;">Clipboard</span> <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">ClipboardOld</span>  <span style="color:#898887;">; Restore previous contents of clipboard.</span>
0310 <span style="color:#898887;">; This will move the InputBox's caret to a more friendly position:</span>
0311 <span style="font-weight:bold;">SetTimer</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">MoveCaret</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">10</span>
0312 <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">ErrorLevel</span>  <span style="color:#898887;">; The user pressed Cancel.</span>
0313     <span style="font-weight:bold;">return</span>
0314 <span style="font-weight:bold;">if</span> <span style="color:#644a9b;">InStr</span><span style="color:#ca60ca;">(</span><span style="color:#644a9b;">Hotstring</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;:R</span><span style="color:#3daee9;">`::</span><span style="color:#bf0303;">:&quot;</span><span style="color:#ca60ca;">)</span>
0315 <span style="color:#ca60ca;">{</span>
0316     <span style="color:#644a9b;font-weight:bold;">MsgBox</span> You didn't provide an abbreviation. The hotstring has not been added.
0317     <span style="font-weight:bold;">return</span>
0318 <span style="color:#ca60ca;">}</span>
0319 <span style="color:#898887;">; Otherwise, add the hotstring and reload the script:</span>
0320 <span style="color:#644a9b;font-weight:bold;">FileAppend</span><span style="color:#ca60ca;">,</span> <span style="color:#3daee9;">`n</span><span style="color:#0057ae;">%Hotstring%</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">%A_ScriptFullPath%</span>  <span style="color:#898887;">; Put a `n at the beginning in case file lacks a blank line at its end.</span>
0321 <span style="color:#644a9b;font-weight:bold;">Reload</span>
0322 <span style="font-weight:bold;">Sleep</span> <span style="color:#b08000;">200</span>
0323 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> 4<span style="color:#ca60ca;">,,</span> The hotstring just added appears to be improperly formatted.
0324 <span style="font-weight:bold;">IfMsgBox</span><span style="color:#ca60ca;">,</span> <span style="font-weight:bold;">Yes</span><span style="color:#ca60ca;">,</span> <span style="color:#644a9b;font-weight:bold;">Edit</span>
0325 <span style="font-weight:bold;">return</span>
0326 
0327 MoveCaret:
0328 <span style="font-weight:bold;">IfWinNotActive</span><span style="color:#ca60ca;">,</span> <span style="font-weight:bold;">New</span> <span style="color:#644a9b;">Hotstring</span>
0329     <span style="font-weight:bold;">return</span>
0330 <span style="color:#898887;">; Otherwise, move the InputBox's insertion point to where the user will type the abbreviation.</span>
0331 <span style="color:#644a9b;font-weight:bold;">Send</span> <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">Home</span><span style="color:#ca60ca;">}{</span><span style="color:#644a9b;font-weight:bold;">Right 3</span><span style="color:#ca60ca;">}</span>
0332 <span style="font-weight:bold;">SetTimer</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">MoveCaret</span><span style="color:#ca60ca;">,</span> <span style="font-weight:bold;">Off</span>
0333 <span style="font-weight:bold;">return</span>
0334 
0335 <span style="color:#898887;">; This example also demonstrates one way to implement case conformity in a script.</span>
0336 <span style="color:#ca60ca;">:</span>C<span style="color:#ca60ca;">:</span>BTW<span style="color:#ca60ca;">::</span>  <span style="color:#898887;">; Typed in all-caps.</span>
0337 <span style="color:#ca60ca;">:</span>C<span style="color:#ca60ca;">:</span>Btw<span style="color:#ca60ca;">::</span>  <span style="color:#898887;">; Typed with only the first letter upper-case.</span>
0338 <span style="color:#ca60ca;">:</span> <span style="color:#ca60ca;">:</span>btw<span style="color:#ca60ca;">::</span>  <span style="color:#898887;">; Typed in any other combination.</span>
0339     case_conform_btw<span style="color:#ca60ca;">()</span> <span style="color:#ca60ca;">{</span>
0340         hs <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">A_ThisHotkey</span>  <span style="color:#898887;">; For convenience and in case we're interrupted.</span>
0341         <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">hs</span> <span style="color:#ca60ca;">==</span> <span style="color:#bf0303;">&quot;:C:BTW&quot;</span><span style="color:#ca60ca;">)</span>
0342             <span style="color:#644a9b;font-weight:bold;">Send</span> BY THE WAY
0343         <span style="font-weight:bold;">else</span> <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">hs</span> <span style="color:#ca60ca;">==</span> <span style="color:#bf0303;">&quot;:C:Btw&quot;</span><span style="color:#ca60ca;">)</span>
0344             <span style="color:#644a9b;font-weight:bold;">Send</span> By the way
0345         <span style="font-weight:bold;">else</span>
0346             <span style="color:#644a9b;font-weight:bold;">Send</span> by the way
0347     <span style="color:#ca60ca;">}</span>
0348 
0349 <span style="color:#aa5500;">#IfWinActive</span> <span style="font-weight:bold;">ahk_class</span> Notepad
0350 <span style="color:#ca60ca;">::</span>btw<span style="color:#ca60ca;">::</span>This replacement text will appear only in Notepad.
0351 <span style="color:#aa5500;">#IfWinActive</span>
0352 <span style="color:#ca60ca;">::</span>btw<span style="color:#ca60ca;">::</span>This replacement text appears in windows other than Notepad.
0353 
0354 <span style="color:#aa5500;">#Hotstring</span> EndChars -()[]{}:<span style="color:#898887;">;'&quot;/\,.?!`n `t</span>
0355 
0356 <span style="color:#644a9b;">Hotstring</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;EndChars&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;-()[]{}:;&quot;</span><span style="color:#ca60ca;">)</span>
0357 
0358 <span style="color:#ca60ca;">::</span>btw<span style="color:#ca60ca;">::</span>
0359 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> You typed &quot;<span style="color:#3daee9;">``</span>btw<span style="color:#3daee9;">``</span>&quot;.
0360 <span style="font-weight:bold;">return</span>
0361 
0362 <span style="color:#ca60ca;">:*:</span>]d<span style="color:#ca60ca;">::</span>  <span style="color:#898887;">; This hotstring replaces &quot;]d&quot; with the current date and time via the commands below.</span>
0363 
0364 MyFunction<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">FirstParameter</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Second</span><span style="color:#ca60ca;">,</span> <span style="font-weight:bold;">ByRef</span> <span style="color:#0057ae;">Third</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Fourth</span><span style="color:#ca60ca;">:=</span><span style="color:#bf0303;">&quot;&quot;</span><span style="color:#ca60ca;">)</span>
0365 <span style="color:#ca60ca;">{</span>
0366     <span style="font-weight:bold;">return</span> <span style="color:#bf0303;">&quot;a value&quot;</span>
0367 <span style="color:#ca60ca;">}</span>
0368 
0369 <span style="font-weight:bold;">Loop</span> <span style="color:#b08000;">3</span>
0370     <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#0057ae;">MyArray%A_Index%</span>
0371 
0372 <span style="color:#644a9b;font-weight:bold;">SysGet</span><span style="color:#ca60ca;">,</span> WA<span style="color:#ca60ca;">,</span> MonitorWorkArea
0373 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> Left: <span style="color:#0057ae;">%WALeft%</span> -- Top: <span style="color:#0057ae;">%WATop%</span> -- Right: <span style="color:#0057ae;">%WARight%</span> -- Bottom: <span style="color:#0057ae;">%WABottom%</span>.
0374 
0375 n <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">123</span> <span style="color:#b08000;">00123</span> <span style="color:#ca60ca;">-</span><span style="color:#b08000;">1.</span>  <span style="color:#b08000;">0x7B</span> <span style="color:#b08000;">0x007B</span> <span style="color:#ca60ca;">-</span><span style="color:#b08000;">0x1</span>  <span style="color:#b08000;">3.14159</span>
0376 
0377 <span style="color:#644a9b;font-weight:bold;">FileAppend</span><span style="color:#ca60ca;">,</span>   <span style="color:#898887;">; Comment.</span>
0378 <span style="color:#898887;">; Comment.</span>
0379 ( <span style="color:#644a9b;">LTrim</span> <span style="font-weight:bold;">Join</span>    <span style="color:#898887;">; Comment.</span>
0380      <span style="color:#898887;">; This is not a comment; it is literal. Include the word Comments in the line above to make it a comment.</span>
0381 ), C:\File.txt   <span style="color:#898887;">; Comment.</span>
0382 
0383 param <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">%A_Index%</span>  <span style="color:#898887;">; Fetch the contents of the variable whose name is contained in A_Index.</span>
0384 
0385 <span style="font-weight:bold;">Add</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">X</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Y</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Z</span><span style="color:#ca60ca;">:=</span><span style="color:#b08000;">0</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">{</span>
0386     <span style="font-weight:bold;">return</span> <span style="color:#0057ae;">X</span> <span style="color:#ca60ca;">+</span> <span style="color:#0057ae;">Y</span> <span style="color:#ca60ca;">+</span> <span style="color:#0057ae;">Z</span>
0387 <span style="color:#ca60ca;">}</span>
0388 
0389 <span style="font-weight:bold;">Join</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">sep</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">params</span><span style="color:#ca60ca;">*)</span> <span style="color:#ca60ca;">{</span>
0390     <span style="font-weight:bold;">for</span> <span style="color:#0057ae;">index</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;">param</span> <span style="font-weight:bold;">in</span> <span style="color:#0057ae;">params</span>
0391         str <span style="color:#ca60ca;">.=</span> param . sep
0392     <span style="font-weight:bold;">return</span> <span style="color:#644a9b;">SubStr</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">str</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">1</span><span style="color:#ca60ca;">,</span> <span style="color:#ca60ca;">-</span><span style="color:#644a9b;">StrLen</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">sep</span><span style="color:#ca60ca;">))</span>
0393 <span style="color:#ca60ca;">}</span>
0394 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="font-weight:bold;">Join</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;</span><span style="color:#3daee9;">`n</span><span style="color:#bf0303;">&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;one&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;two&quot;</span><span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">&quot;three&quot;</span><span style="color:#ca60ca;">)</span>
0395 
0396 LogToFile<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">TextToLog</span><span style="color:#ca60ca;">)</span>
0397 <span style="color:#ca60ca;">{</span>
0398     <span style="font-weight:bold;">global</span> <span style="color:#0057ae;">LogFileName</span>  <span style="color:#898887;">; This global variable was previously given a value somewhere outside this function.</span>
0399     <span style="color:#644a9b;font-weight:bold;">FileAppend</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">%TextToLog%</span><span style="color:#3daee9;">`n</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">%LogFileName%</span>
0400 <span style="color:#ca60ca;">}</span>
0401 
0402 SetDefaults<span style="color:#ca60ca;">()</span>
0403 <span style="color:#ca60ca;">{</span>
0404     <span style="font-weight:bold;">global</span>
0405     MyGlobal <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">33</span>
0406     <span style="font-weight:bold;">local</span> <span style="color:#0057ae;">x</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">y</span><span style="color:#ca60ca;">:=</span><span style="color:#b08000;">0</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">z</span>
0407 <span style="color:#ca60ca;">}</span>
0408 
0409 LogToFile<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">TextToLog</span><span style="color:#ca60ca;">)</span>
0410 <span style="color:#ca60ca;">{</span>
0411     <span style="font-weight:bold;">static</span> <span style="color:#0057ae;">LoggedLines</span> <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">0</span>
0412     LoggedLines <span style="color:#ca60ca;">+=</span> <span style="color:#b08000;">1</span>
0413     <span style="font-weight:bold;">global</span> <span style="color:#0057ae;">LogFileName</span>
0414     <span style="color:#644a9b;font-weight:bold;">FileAppend</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">%LoggedLines%</span>: <span style="color:#0057ae;">%TextToLog%</span><span style="color:#3daee9;">`n</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">%LogFileName%</span>
0415 <span style="color:#ca60ca;">}</span>
0416 
0417 GetFromStaticArray<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">WhichItemNumber</span><span style="color:#ca60ca;">)</span>
0418 <span style="color:#ca60ca;">{</span>
0419     <span style="font-weight:bold;">static</span>
0420     <span style="font-weight:bold;">static</span> <span style="color:#0057ae;">FirstCallToUs</span> <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">true</span>
0421     <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">FirstCallToUs</span>
0422     <span style="color:#ca60ca;">{</span>
0423         FirstCallToUs <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">false</span>
0424         <span style="font-weight:bold;">Loop</span> <span style="color:#b08000;">10</span>
0425             StaticArray<span style="color:#0057ae;">%A_Index%</span> <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;Value #&quot;</span> <span style="color:#ca60ca;">.</span> <span style="color:#0057ae;">A_Index</span>
0426     <span style="color:#ca60ca;">}</span>
0427     <span style="font-weight:bold;">return</span> <span style="color:#0057ae;">StaticArray%WhichItemNumber%</span>
0428 <span style="color:#ca60ca;">}</span>
0429 
0430 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">ColorName</span> <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span> <span style="font-weight:bold;">AND</span> <span style="font-weight:bold;">not</span> <span style="color:#0057ae;">FindColor</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">ColorName</span><span style="color:#ca60ca;">))</span>
0431     <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#0057ae;">%ColorName%</span> could not be found.
0432 
0433 <span style="font-weight:bold;">class</span> baseObject <span style="color:#ca60ca;">{</span>
0434     <span style="font-weight:bold;">static</span> <span style="color:#0057ae;">foo</span> <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;bar&quot;</span>
0435 }
0436 baseObject <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{</span><span style="color:#0057ae;">foo</span><span style="color:#ca60ca;">:</span> <span style="color:#bf0303;">&quot;bar&quot;</span><span style="color:#ca60ca;">}</span>
0437 
0438 thing <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{}</span>
0439 thing<span style="color:#ca60ca;">.</span>foo <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;bar&quot;</span>
0440 thing<span style="color:#ca60ca;">.</span>test <span style="color:#ca60ca;">:=</span> <span style="color:#644a9b;">Func</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;thing_test&quot;</span><span style="color:#ca60ca;">)</span>
0441 thing<span style="color:#ca60ca;">.</span>test<span style="color:#ca60ca;">()</span>
0442 
0443 thing_test<span style="color:#ca60ca;">(</span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">{</span>
0444     <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">foo</span>
0445 <span style="color:#ca60ca;">}</span>
0446 
0447 <span style="font-weight:bold;">class</span> Color
0448 <span style="color:#ca60ca;">{</span>
0449     <span style="font-weight:bold;">__New</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">aRGB</span><span style="color:#ca60ca;">)</span>
0450     <span style="color:#ca60ca;">{</span>
0451         <span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span>RGB <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">aRGB</span>
0452     <span style="color:#ca60ca;">}</span>
0453 
0454     <span style="font-weight:bold;">__Delete</span><span style="color:#ca60ca;">()</span>
0455     <span style="color:#ca60ca;">{</span>
0456         <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#bf0303;">&quot;Delete Color.&quot;</span>
0457     <span style="color:#ca60ca;">}</span>
0458 
0459     <span style="font-weight:bold;">static</span> <span style="color:#644a9b;font-weight:bold;">Shift</span> <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{</span><span style="color:#0057ae;">R</span><span style="color:#ca60ca;">:</span><span style="color:#b08000;">16</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">G</span><span style="color:#ca60ca;">:</span><span style="color:#b08000;">8</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">B</span><span style="color:#ca60ca;">:</span><span style="color:#b08000;">0</span><span style="color:#ca60ca;">}</span>
0460 
0461     <span style="font-weight:bold;">__Get</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">aName</span><span style="color:#ca60ca;">)</span>
0462     <span style="color:#ca60ca;">{</span>
0463         <span style="color:#898887;">; </span><span style="color:#81ca2d;background-color:#f7e6e6;font-weight:bold;">NOTE</span><span style="color:#898887;">: Using this.Shift here would cause an infinite loop!</span>
0464         shift <span style="color:#ca60ca;">:=</span> <span style="font-weight:bold;">Color</span><span style="color:#ca60ca;">.</span><span style="color:#644a9b;font-weight:bold;">Shift</span><span style="color:#ca60ca;">[</span><span style="color:#0057ae;">aName</span><span style="color:#ca60ca;">]</span>  <span style="color:#898887;">; Get the number of bits to shift.</span>
0465         <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#644a9b;font-weight:bold;">shift</span> <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span><span style="color:#ca60ca;">)</span>  <span style="color:#898887;">; Is it a known property?</span>
0466             <span style="font-weight:bold;">return</span> <span style="color:#ca60ca;">(</span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">RGB</span> <span style="color:#ca60ca;">&gt;&gt;</span> <span style="color:#644a9b;font-weight:bold;">shift</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">&amp;</span> <span style="color:#b08000;">0xff</span>
0467         <span style="color:#898887;">; </span><span style="color:#81ca2d;background-color:#f7e6e6;font-weight:bold;">NOTE</span><span style="color:#898887;">: Using 'return' here would break this.RGB.</span>
0468     <span style="color:#ca60ca;">}</span>
0469 
0470     <span style="font-weight:bold;">__Set</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">aName</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">aValue</span><span style="color:#ca60ca;">)</span>
0471     <span style="color:#ca60ca;">{</span>
0472         <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">((</span><span style="color:#644a9b;font-weight:bold;">shift</span> <span style="color:#ca60ca;">:=</span> <span style="font-weight:bold;">Color</span><span style="color:#ca60ca;">.</span><span style="color:#644a9b;font-weight:bold;">Shift</span><span style="color:#ca60ca;">[</span><span style="color:#0057ae;">aName</span><span style="color:#ca60ca;">])</span> <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span><span style="color:#ca60ca;">)</span>
0473         <span style="color:#ca60ca;">{</span>
0474             aValue <span style="color:#ca60ca;">&amp;=</span> <span style="color:#b08000;">255</span>  <span style="color:#898887;">; Truncate it to the proper range.</span>
0475 
0476             <span style="color:#898887;">; Calculate and store the new RGB value.</span>
0477             <span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span>RGB <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">aValue</span> <span style="color:#ca60ca;">&lt;&lt;</span> <span style="color:#644a9b;font-weight:bold;">shift</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">|</span> <span style="color:#ca60ca;">(</span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">RGB</span> <span style="color:#ca60ca;">&amp;</span> <span style="color:#ca60ca;">~(</span><span style="color:#b08000;">0xff</span> <span style="color:#ca60ca;">&lt;&lt;</span> <span style="color:#644a9b;font-weight:bold;">shift</span><span style="color:#ca60ca;">))</span>
0478 
0479             <span style="color:#898887;">; 'Return' must be used to indicate a new key-value pair should not be created.</span>
0480             <span style="color:#898887;">; This also defines what will be stored in the 'x' in 'x := clr[name] := val':</span>
0481             <span style="font-weight:bold;">return</span> <span style="color:#0057ae;">aValue</span>
0482         <span style="color:#ca60ca;">}</span>
0483         <span style="color:#898887;">; </span><span style="color:#81ca2d;background-color:#f7e6e6;font-weight:bold;">NOTE</span><span style="color:#898887;">: Using 'return' here would break this.stored_RGB and this.RGB.</span>
0484     <span style="color:#ca60ca;">}</span>
0485 
0486     <span style="color:#898887;">; Meta-functions can be mixed with properties:</span>
0487     <span style="font-weight:bold;">RGB</span> <span style="color:#ca60ca;">{</span>
0488         <span style="font-weight:bold;">get</span> <span style="color:#ca60ca;">{</span>
0489             <span style="color:#898887;">; Return it in hex format:</span>
0490             <span style="font-weight:bold;">return</span> <span style="color:#644a9b;">format</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;0x{:06x}&quot;</span><span style="color:#ca60ca;">,</span> <span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">stored_RGB</span><span style="color:#ca60ca;">)</span>
0491         <span style="color:#ca60ca;">}</span>
0492         <span style="font-weight:bold;">set</span> <span style="color:#ca60ca;">{</span>
0493             <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">stored_RGB</span> <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">value</span>
0494         <span style="color:#ca60ca;">}</span>
0495     <span style="color:#ca60ca;">}</span>
0496 
0497     <span style="font-weight:bold;">class</span> __Get extends Properties
0498     <span style="color:#ca60ca;">{</span>
0499         R<span style="color:#ca60ca;">()</span> <span style="color:#ca60ca;">{</span>
0500             <span style="font-weight:bold;">return</span> <span style="color:#ca60ca;">(</span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">RGB</span> <span style="color:#ca60ca;">&gt;&gt;</span> <span style="color:#b08000;">16</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">&amp;</span> <span style="color:#b08000;">255</span>
0501         <span style="color:#ca60ca;">}</span>
0502         G<span style="color:#ca60ca;">()</span> <span style="color:#ca60ca;">{</span>
0503             <span style="font-weight:bold;">return</span> <span style="color:#ca60ca;">(</span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">RGB</span> <span style="color:#ca60ca;">&gt;&gt;</span> <span style="color:#b08000;">8</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">&amp;</span> <span style="color:#b08000;">255</span>
0504         <span style="color:#ca60ca;">}</span>
0505         B<span style="color:#ca60ca;">()</span> <span style="color:#ca60ca;">{</span>
0506             <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">this</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">RGB</span> <span style="color:#ca60ca;">&amp;</span> <span style="color:#b08000;">255</span>
0507         <span style="color:#ca60ca;">}</span>
0508     <span style="color:#ca60ca;">}</span>
0509 
0510     <span style="font-weight:bold;">Property</span><span style="color:#ca60ca;">[]</span>  <span style="color:#898887;">; Brackets are optional</span>
0511     <span style="color:#ca60ca;">{</span>
0512         <span style="font-weight:bold;">get</span> <span style="color:#ca60ca;">{</span>
0513             <span style="font-weight:bold;">return</span> <span style="color:#ca60ca;">...</span>
0514         <span style="color:#ca60ca;">}</span>
0515         <span style="font-weight:bold;">set</span> <span style="color:#ca60ca;">{</span>
0516             <span style="font-weight:bold;">return</span> <span style="color:#ca60ca;">...</span> <span style="color:#ca60ca;">:=</span> <span style="color:#0057ae;">value</span>
0517         <span style="color:#ca60ca;">}</span>
0518     <span style="color:#ca60ca;">}</span>
0519 <span style="color:#ca60ca;">}</span>
0520 
0521 <span style="font-weight:bold;">class</span> Properties extends FunctionObject
0522 <span style="color:#ca60ca;">{</span>
0523     Call<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">aTarget</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">aName</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">aParams</span><span style="color:#ca60ca;">*)</span>
0524     <span style="color:#ca60ca;">{</span>
0525         <span style="color:#898887;">; If this Properties object contains a definition for this half-property, call it.</span>
0526         <span style="font-weight:bold;">if</span> <span style="color:#644a9b;">ObjHasKey</span><span style="color:#ca60ca;">(</span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">aName</span><span style="color:#ca60ca;">)</span>
0527             <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">this</span><span style="color:#ca60ca;">[</span><span style="color:#0057ae;">aName</span><span style="color:#ca60ca;">].</span><span style="color:#0057ae;">Call</span><span style="color:#ca60ca;">(</span><span style="color:#0057ae;">aTarget</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">aParams</span><span style="color:#ca60ca;">*)</span>
0528     <span style="color:#ca60ca;">}</span>
0529 <span style="color:#ca60ca;">}</span>
0530 
0531 MyGet<span style="color:#ca60ca;">(</span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Key</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Key2</span><span style="color:#ca60ca;">)</span>
0532 MySet<span style="color:#ca60ca;">(</span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Key</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Key2</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Value</span><span style="color:#ca60ca;">)</span>
0533 MyCall<span style="color:#ca60ca;">(</span><span style="font-weight:bold;">this</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Name</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">Params</span><span style="color:#ca60ca;">)</span>
0534 
0535 ClassName <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{</span> <span style="font-weight:bold;">__Get</span><span style="color:#ca60ca;">:</span> <span style="color:#644a9b;">Func</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;MyGet&quot;</span><span style="color:#ca60ca;">),</span> <span style="font-weight:bold;">__Set</span><span style="color:#ca60ca;">:</span> <span style="color:#644a9b;">Func</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;MySet&quot;</span><span style="color:#ca60ca;">),</span> <span style="font-weight:bold;">__Call</span><span style="color:#ca60ca;">:</span> <span style="color:#644a9b;">Func</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;MyCall&quot;</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">}</span>
0536 
0537 red  <span style="color:#ca60ca;">:=</span> <span style="font-weight:bold;">new</span> <span style="font-weight:bold;">Color</span><span style="color:#ca60ca;">(</span><span style="color:#b08000;">0xff0000</span><span style="color:#ca60ca;">),</span> red<span style="color:#ca60ca;">.</span>R <span style="color:#ca60ca;">-=</span> <span style="color:#b08000;">5</span>
0538 cyan <span style="color:#ca60ca;">:=</span> <span style="font-weight:bold;">new</span> <span style="font-weight:bold;">Color</span><span style="color:#ca60ca;">(</span><span style="color:#b08000;">0</span><span style="color:#ca60ca;">),</span> cyan<span style="color:#ca60ca;">.</span>G <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">255</span><span style="color:#ca60ca;">,</span> cyan<span style="color:#ca60ca;">.</span>B <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">255</span>
0539 
0540 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#bf0303;">&quot;red: &quot;</span> <span style="color:#0057ae;">red</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">R</span> <span style="color:#bf0303;">&quot;,&quot;</span> <span style="color:#0057ae;">red</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">G</span> <span style="color:#bf0303;">&quot;,&quot;</span> <span style="color:#0057ae;">red</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">B</span> <span style="color:#bf0303;">&quot; = &quot;</span> <span style="color:#0057ae;">red</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">RGB</span>
0541 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#bf0303;">&quot;cyan: &quot;</span> <span style="color:#0057ae;">cyan</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">R</span> <span style="color:#bf0303;">&quot;,&quot;</span> <span style="color:#0057ae;">cyan</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">G</span> <span style="color:#bf0303;">&quot;,&quot;</span> <span style="color:#0057ae;">cyan</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">B</span> <span style="color:#bf0303;">&quot; = &quot;</span> <span style="color:#0057ae;">cyan</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">RGB</span>
0542 
0543 <span style="color:#898887;">; This example requires the FunctionObject class in order to work.</span>
0544 blue <span style="color:#ca60ca;">:=</span> <span style="font-weight:bold;">new</span> <span style="font-weight:bold;">Color</span><span style="color:#ca60ca;">(</span><span style="color:#b08000;">0x0000ff</span><span style="color:#ca60ca;">)</span>
0545 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#0057ae;">blue</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">R</span> <span style="color:#bf0303;">&quot;,&quot;</span> <span style="color:#0057ae;">blue</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">G</span> <span style="color:#bf0303;">&quot;,&quot;</span> <span style="color:#0057ae;">blue</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">B</span>
0546 
0547 x <span style="color:#ca60ca;">:=</span> <span style="color:#ca60ca;">{</span><span style="font-weight:bold;">base</span><span style="color:#ca60ca;">:</span> <span style="color:#ca60ca;">{</span><span style="color:#0057ae;">addr</span><span style="color:#ca60ca;">:</span> <span style="color:#644a9b;">Func</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;x_Addr&quot;</span><span style="color:#ca60ca;">),</span> <span style="font-weight:bold;">__Set</span><span style="color:#ca60ca;">:</span> <span style="color:#644a9b;">Func</span><span style="color:#ca60ca;">(</span><span style="color:#bf0303;">&quot;x_Setter&quot;</span><span style="color:#ca60ca;">)}}</span>
0548 
0549 <span style="color:#898887;">; Assign value, implicitly calling x_Setter to create sub-objects.</span>
0550 x<span style="color:#ca60ca;">[</span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">3</span><span style="color:#ca60ca;">]</span> <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot;...&quot;</span>
0551 
0552 <span style="color:#898887;">; Retrieve value and call example method.</span>
0553 <span style="color:#644a9b;font-weight:bold;">MsgBox</span> <span style="color:#ca60ca;">% </span><span style="color:#0057ae;">x</span><span style="color:#ca60ca;">[</span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">3</span><span style="color:#ca60ca;">]</span> <span style="color:#bf0303;">&quot;</span><span style="color:#3daee9;">`n</span><span style="color:#bf0303;">&quot;</span> <span style="color:#0057ae;">x</span><span style="color:#ca60ca;">.</span><span style="color:#0057ae;">addr</span><span style="color:#ca60ca;">()</span> <span style="color:#bf0303;">&quot;</span><span style="color:#3daee9;">`n</span><span style="color:#bf0303;">&quot;</span> <span style="color:#0057ae;">x</span><span style="color:#ca60ca;">[</span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">].</span><span style="color:#0057ae;">addr</span><span style="color:#ca60ca;">()</span> <span style="color:#bf0303;">&quot;</span><span style="color:#3daee9;">`n</span><span style="color:#bf0303;">&quot;</span> <span style="color:#0057ae;">x</span><span style="color:#ca60ca;">[</span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">].</span><span style="color:#0057ae;">addr</span><span style="color:#ca60ca;">()</span>
0554 
0555 x_Setter<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">x</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">p1</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">p2</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">p3</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">{</span>
0556     x<span style="color:#ca60ca;">[</span><span style="color:#0057ae;">p1</span><span style="color:#ca60ca;">]</span> <span style="color:#ca60ca;">:=</span> <span style="font-weight:bold;">new</span> <span style="color:#0057ae;">x</span><span style="color:#ca60ca;">.</span><span style="font-weight:bold;">base</span>
0557 <span style="color:#ca60ca;">}</span>
0558 
0559 x_Addr<span style="color:#ca60ca;">(</span><span style="color:#0057ae;">x</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">{</span>
0560     <span style="font-weight:bold;">return</span> <span style="color:#ca60ca;">&amp;</span><span style="color:#0057ae;">x</span>
0561 <span style="color:#ca60ca;">}</span>
0562 
0563 <span style="color:#644a9b;font-weight:bold;">InputBox</span><span style="color:#ca60ca;">,</span> OutputVar<span style="color:#ca60ca;">,</span> Question 1<span style="color:#ca60ca;">,</span> What is your first name?
0564 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">OutputVar</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;Bill&quot;</span><span style="color:#ca60ca;">)</span>
0565     <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> That's an awesome name<span style="color:#3daee9;">`,</span> <span style="color:#0057ae;">%OutputVar%</span>.
0566 
0567 <span style="color:#644a9b;font-weight:bold;">InputBox</span><span style="color:#ca60ca;">,</span> OutputVar2<span style="color:#ca60ca;">,</span> Question 2<span style="color:#ca60ca;">,</span> Do you like AutoHotkey?
0568 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">OutputVar2</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;yes&quot;</span><span style="color:#ca60ca;">)</span>
0569     <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> Thank you for answering <span style="color:#0057ae;">%OutputVar2%</span><span style="color:#3daee9;">`,</span> <span style="color:#0057ae;">%OutputVar%</span><span style="color:#644a9b;font-weight:bold;">!</span> We will become great friends.
0570 <span style="font-weight:bold;">else</span>
0571     <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">%OutputVar%</span><span style="color:#3daee9;">`,</span> That makes me sad.
0572 
0573 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> 4<span style="color:#ca60ca;">,,</span> Would you like to continue?
0574 <span style="font-weight:bold;">IfMsgBox</span><span style="color:#ca60ca;">,</span> <span style="font-weight:bold;">No</span>
0575     <span style="font-weight:bold;">return</span>  <span style="color:#898887;">; If No, stop the code from going further.</span>
0576 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> You pressed YES.  <span style="color:#898887;">; Otherwise, the user picked yes.</span>
0577 
0578 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">car</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;old&quot;</span><span style="color:#ca60ca;">)</span>
0579 <span style="color:#ca60ca;">{</span>
0580     <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> The car is really old.
0581     <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">wheels</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;flat&quot;</span><span style="color:#ca60ca;">)</span>
0582     <span style="color:#ca60ca;">{</span>
0583         <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> This car is not safe to drive.
0584         <span style="font-weight:bold;">return</span>
0585     <span style="color:#ca60ca;">}</span>
0586     <span style="font-weight:bold;">else</span>
0587     <span style="color:#ca60ca;">{</span>
0588         <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> Be careful<span style="color:#644a9b;font-weight:bold;">!</span> This old car will be dangerous to drive.
0589     <span style="color:#ca60ca;">}</span>
0590 <span style="color:#ca60ca;">}</span>
0591 <span style="font-weight:bold;">else</span>
0592 <span style="color:#ca60ca;">{</span>
0593     <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> My<span style="color:#3daee9;">`,</span> what a shiny new vehicle you have there.
0594 <span style="color:#ca60ca;">}</span>
0595 
0596 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="font-weight:bold;">Color</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;Red&quot;</span> <span style="font-weight:bold;">or</span> <span style="font-weight:bold;">Color</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;Green&quot;</span>  <span style="font-weight:bold;">or</span> <span style="font-weight:bold;">Color</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;Blue&quot;</span>   <span style="color:#898887;">; Comment.</span>
0597     <span style="font-weight:bold;">or</span> <span style="font-weight:bold;">Color</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;Black&quot;</span> <span style="font-weight:bold;">or</span> <span style="font-weight:bold;">Color</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;Gray&quot;</span> <span style="font-weight:bold;">or</span> <span style="font-weight:bold;">Color</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">&quot;White&quot;</span><span style="color:#ca60ca;">)</span>   <span style="color:#898887;">; Comment.</span>
0598     <span style="font-weight:bold;">and</span> ProductIsAvailableInColor(Product<span style="color:#ca60ca;">,</span> Color<span style="color:#ca60ca;">)</span>   <span style="color:#898887;">; Comment.</span>
0599 
0600 <span style="font-weight:bold;">if</span> <span style="color:#ca60ca;">(</span><span style="color:#0057ae;">codepage</span> <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span><span style="color:#ca60ca;">)</span>
0601     codepage <span style="color:#ca60ca;">:=</span> <span style="color:#bf0303;">&quot; /CP&quot;</span> <span style="color:#ca60ca;">.</span> <span style="color:#0057ae;">codepage</span>
0602 cmd<span style="color:#ca60ca;">=</span>&quot;<span style="color:#0057ae;">%A_AhkPath%</span>&quot;<span style="color:#0057ae;">%codepage%</span> &quot;<span style="color:#3daee9;">`%</span>1&quot; <span style="color:#3daee9;">`%</span><span style="color:#644a9b;font-weight:bold;">*</span>
0603 key<span style="color:#ca60ca;">=</span>AutoHotkeyScript\Shell\Open\Command
0604 <span style="font-weight:bold;">if</span> <span style="color:#0057ae;">A_IsAdmin</span>    <span style="color:#898887;">; Set for all users.</span>
0605     <span style="color:#644a9b;font-weight:bold;">RegWrite</span><span style="color:#ca60ca;">,</span> REG_SZ<span style="color:#ca60ca;">,</span> HKCR<span style="color:#ca60ca;">,</span> <span style="color:#0057ae;">%key%</span><span style="color:#ca60ca;">,,</span> <span style="color:#0057ae;">%cmd%</span>
0606 <span style="font-weight:bold;">else</span>            <span style="color:#898887;">; Set for current user only.</span>
0607     <span style="color:#644a9b;font-weight:bold;">RegWrite</span><span style="color:#ca60ca;">,</span> REG_SZ<span style="color:#ca60ca;">,</span> HKCU<span style="color:#ca60ca;">,</span> Software\Classes\<span style="color:#0057ae;">%key%</span><span style="color:#ca60ca;">,,</span> <span style="color:#0057ae;">%cmd%</span>
0608 
0609 <span style="color:#644a9b;font-weight:bold;">^j</span><span style="color:#ca60ca;">::</span> <span style="color:#898887;">; hotkey label</span>
0610 <span style="color:#644a9b;font-weight:bold;">MsgBox</span><span style="color:#ca60ca;">,</span> You typed btw.
0611 </pre></body></html>