Files
RedBear-OS/local/recipes/kde/kf6-syntaxhighlighting/source/autotests/html/highlight.ahk.html
T

612 lines
92 KiB
HTML

<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>highlight.ahk</title>
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (AutoHotKey) - Theme (Breeze Light)"/>
</head><body style="background-color:#ffffff;color:#1f1c1b"><pre>
<span style="color:#644a9b;font-weight:bold">^j</span><span style="color:#ca60ca">::</span> <span style="color:#898887">; hotkey label</span>
<span style="color:#ca60ca">::</span>ftw<span style="color:#ca60ca">::</span>Free the whales <span style="color:#898887">; hotstring label abbreviation</span>
<span style="color:#ca60ca">::</span>btw<span style="color:#ca60ca">::</span> <span style="color:#898887">; hotstring label action</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span><span style="color:#ca60ca">,</span> You typed btw.
<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>
<span style="color:#644a9b;font-weight:bold">MsgBox</span><span style="color:#ca60ca">,</span> Wow<span style="color:#644a9b;font-weight:bold">!</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span><span style="color:#ca60ca">,</span> There are
<span style="color:#644a9b;font-weight:bold">Run</span><span style="color:#ca60ca">,</span> notepad.exe
<span style="color:#644a9b;font-weight:bold">WinActivate</span><span style="color:#ca60ca">,</span> Untitled - Notepad
<span style="color:#644a9b;font-weight:bold">WinWaitActive</span><span style="color:#ca60ca">,</span> Untitled - Notepad
<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>
<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.
<span style="font-weight:bold">return</span>
<span style="color:#644a9b;font-weight:bold">Numpad0 &amp; Numpad1</span><span style="color:#ca60ca">::</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span><span style="color:#ca60ca">,</span> You pressed Numpad1 while holding down Numpad0.
<span style="color:#644a9b;font-weight:bold">Run</span><span style="color:#ca60ca">,</span> notepad.exe
<span style="font-weight:bold">return</span>
<span style="color:#898887">; Untitled - Notepad</span>
<span style="color:#aa5500">#IfWinActive</span> Untitled - Notepad
<span style="color:#644a9b;font-weight:bold">!q</span><span style="color:#ca60ca">::</span>
<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.
<span style="font-weight:bold">return</span>
<span style="color:#898887">; Any window that isn't Untitled - Notepad</span>
<span style="color:#aa5500">#IfWinActive</span>
<span style="color:#644a9b;font-weight:bold">!q</span><span style="color:#ca60ca">::</span>
<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.
<span style="font-weight:bold">return</span>
<span style="color:#898887">; Retrieve the ID/HWND of the active window</span>
<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">"A"</span><span style="color:#ca60ca">)</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span><span style="font-weight:bold">id</span>
<span style="color:#898887">; Press Win+↑ to maximize the active window</span>
<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
<span style="color:#644a9b;font-weight:bold">#i</span><span style="color:#ca60ca">::</span>
<span style="color:#644a9b;font-weight:bold">Run</span><span style="color:#ca60ca">,</span> https://www.google.com/
<span style="font-weight:bold">return</span>
<span style="color:#644a9b;font-weight:bold">^p</span><span style="color:#ca60ca">::</span>
<span style="color:#644a9b;font-weight:bold">Run</span><span style="color:#ca60ca">,</span> notepad.exe
<span style="font-weight:bold">return</span>
<span style="color:#644a9b;font-weight:bold">~j</span><span style="color:#ca60ca">::</span>
<span style="color:#644a9b;font-weight:bold">Send</span><span style="color:#ca60ca">,</span> ack
<span style="font-weight:bold">return</span>
<span style="color:#ca60ca">:*:</span>acheiv<span style="color:#ca60ca">::</span>achiev
<span style="color:#ca60ca">::</span>achievment<span style="color:#ca60ca">::</span>achievement
<span style="color:#ca60ca">::</span>acquaintence<span style="color:#ca60ca">::</span>acquaintance
<span style="color:#ca60ca">:*:</span>adquir<span style="color:#ca60ca">::</span>acquir
<span style="color:#ca60ca">::</span>aquisition<span style="color:#ca60ca">::</span>acquisition
<span style="color:#ca60ca">:*:</span>agravat<span style="color:#ca60ca">::</span>aggravat
<span style="color:#ca60ca">:*:</span>allign<span style="color:#ca60ca">::</span>align
<span style="color:#ca60ca">::</span>ameria<span style="color:#ca60ca">::</span>America
<span style="color:#ca60ca">:*:</span>ftw<span style="color:#ca60ca">::</span>Free the whales <span style="color:#898887">; Hotstring modifiers</span>
this_is_a_label: <span style="color:#898887">; label</span>
<span style="color:#aa5500">#IfWinActive</span> Untitled - Notepad
<span style="color:#644a9b;font-weight:bold">#Space</span><span style="color:#ca60ca">::</span>
<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.
<span style="font-weight:bold">return</span>
<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>
<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]
<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>
<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>
<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>
<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>
<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>
<span style="color:#644a9b;font-weight:bold">Send</span><span style="color:#ca60ca">,</span> abc <span style="color:#898887">; CORRECT</span>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<span style="color:#644a9b;font-weight:bold">Send</span><span style="color:#ca60ca">,</span>
<span style="color:#ca60ca">(</span>
Line 1
Line 2
Apples are a fruit.
<span style="color:#ca60ca">)</span>
<span style="color:#644a9b;font-weight:bold">Send</span> <span style="color:#0057ae">%A_Hour%</span>
<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>
<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>
<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">"AutoHotkey"</span><span style="color:#ca60ca">))</span>
<span style="color:#644a9b">SubStr</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"I'm scripting, awesome!"</span><span style="color:#ca60ca">,</span> <span style="color:#b08000">16</span><span style="color:#ca60ca">)</span>
<span style="color:#644a9b;font-weight:bold">SetTitleMatchMode</span> RegEx
<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>
<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>
<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>
<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>
<span style="color:#ca60ca">{</span>
<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>
<span style="font-weight:bold">ExitApp</span>
<span style="color:#ca60ca">}</span>
MyVar <span style="color:#ca60ca">=</span> Text
MyVar <span style="color:#ca60ca">=</span> <span style="color:#0057ae">%MyVar2%</span>
MyVar <span style="color:#ca60ca">=</span> <span style="color:#0057ae">%MyVar2%</span> some text <span style="color:#0057ae">%MyVar3%</span>.
MyVar <span style="color:#ca60ca">:=</span> <span style="color:#644a9b">SubStr</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"I'm scripting, awesome!"</span><span style="color:#ca60ca">,</span> <span style="color:#b08000">16</span><span style="color:#ca60ca">)</span>
MyVar <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"Text"</span>
MyVar <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">MyVar2</span>
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>
MyVar <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"The value of 5 + "</span> <span style="color:#0057ae">MyVar2</span> <span style="color:#bf0303">" is: "</span> <span style="color:#b08000">5</span> <span style="color:#ca60ca">+</span> <span style="color:#0057ae">MyVar2</span>
<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>
Var1 <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">Var2</span> <span style="color:#ca60ca">+</span> <span style="color:#b08000">100</span>
<span style="color:#898887">; Some examples showing when to use percents and when not:</span>
Var <span style="color:#ca60ca">=</span> Text <span style="color:#898887">; Assign some text to a variable (legacy).</span>
<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>
Var2 <span style="color:#ca60ca">=</span> <span style="color:#0057ae">%Var%</span> <span style="color:#898887">; Assign a variable to another (legacy).</span>
Var3 <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">Var</span> <span style="color:#898887">; Assign a variable to another (expression).</span>
Var4 <span style="color:#ca60ca">.=</span> Var <span style="color:#898887">; Append a variable to the end of another (expression).</span>
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>
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>
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>
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>
Var8 <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">Var</span> <span style="color:#bf0303">" Text"</span> <span style="color:#898887">; Assigns a variable to another with some extra text (expression).</span>
<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>
<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>
<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>
<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>
<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>
<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>
MyObject <span style="color:#ca60ca">:=</span> <span style="color:#ca60ca">[</span><span style="color:#bf0303">"one"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"two"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"three"</span><span style="color:#ca60ca">,</span> <span style="color:#b08000">17</span><span style="color:#ca60ca">]</span>
Banana <span style="color:#ca60ca">:=</span> <span style="color:#ca60ca">{</span><span style="color:#bf0303">"Color"</span><span style="color:#ca60ca">:</span> <span style="color:#bf0303">"Yellow"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"Taste"</span><span style="color:#ca60ca">:</span> <span style="color:#bf0303">"Delicious"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"Price"</span><span style="color:#ca60ca">:</span> <span style="color:#b08000">3</span><span style="color:#ca60ca">}</span>
MyObject <span style="color:#ca60ca">:=</span> <span style="color:#644a9b">Array</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"one"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"two"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"three"</span><span style="color:#ca60ca">,</span> <span style="color:#b08000">17</span><span style="color:#ca60ca">)</span>
Banana <span style="color:#ca60ca">:=</span> <span style="color:#644a9b">Object</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"Color"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"Yellow"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"Taste"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"Delicious"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"Price"</span><span style="color:#ca60ca">,</span> <span style="color:#b08000">3</span><span style="color:#ca60ca">)</span>
Banana<span style="color:#ca60ca">[</span><span style="color:#bf0303">"Pickled"</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>
Banana<span style="color:#ca60ca">.</span>Consistency <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"Mushy"</span>
Value <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">Banana</span><span style="color:#ca60ca">[</span><span style="color:#bf0303">"Color"</span><span style="color:#ca60ca">]</span>
Value <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">Banana</span><span style="color:#ca60ca">.</span><span style="font-weight:bold">Color</span>
MyObject<span style="color:#ca60ca">[</span><span style="color:#bf0303">"NewerKey"</span><span style="color:#ca60ca">]</span> <span style="color:#ca60ca">:=</span> <span style="color:#b08000">3.1415</span>
MyObject<span style="color:#ca60ca">.</span>NewKey <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"Shiny"</span>
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>
Banana<span style="color:#ca60ca">.</span>Consistency <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">""</span>
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>
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>
arr <span style="color:#ca60ca">:=</span> <span style="color:#ca60ca">[{}]</span> <span style="color:#898887">; Creates an array containing an object.</span>
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>
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>
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>
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>
y<span style="color:#ca60ca">.</span>parent <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">""</span>
x <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">""</span><span style="color:#ca60ca">,</span> y <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">""</span>
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>
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>
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>
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>
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>
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>
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>
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>
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">"Red"</span><span style="color:#ca60ca">)</span>
<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>
<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>
MyObject<span style="color:#ca60ca">.</span>Pop<span style="color:#ca60ca">()</span>
<span style="color:#0057ae">%Var%</span><span style="color:#ca60ca">()</span>
<span style="font-weight:bold">Sleep</span> <span style="color:#0057ae">MillisecondsToWait</span>
<span style="font-weight:bold">Sleep</span> <span style="color:#0057ae">%MillisecondsToWait%</span>
<span style="font-weight:bold">Sleep</span> <span style="color:#0057ae">%</span> <span style="color:#0057ae">MillisecondsToWait</span>
<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 "2"</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> 1<span style="color:#644a9b;font-weight:bold">+</span>1 <span style="color:#898887">; Shows "1+1"</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span><span style="color:#bf0303">"This is text."</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> This is text.
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span> <span style="color:#0057ae">A_AhkVersion</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#0057ae">%A_AhkVersion%</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span><span style="color:#0057ae">%A_AhkVersion%</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span><span style="color:#bf0303">"Hello %A_UserName%."</span> <span style="color:#898887">; Shows "%A_UserName%"</span>
<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>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span><span style="color:#bf0303">"Hello "</span> <span style="color:#ca60ca">.</span> <span style="color:#0057ae">A_UserName</span> <span style="color:#ca60ca">.</span> <span style="color:#bf0303">"."</span> <span style="color:#898887">; Shows your username.</span>
MyVar <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"This is text."</span>
MyVar <span style="color:#ca60ca">=</span> This is text.
<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>
<span style="font-weight:bold">if</span> <span style="color:#0057ae">Var1</span> <span style="color:#ca60ca">=</span> <span style="color:#0057ae">%Var2%</span>
<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="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>
<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>
<span style="color:#644a9b">Format</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"{:L}{:U}{:T}"</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>
<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 => Move cursor upward</span>
<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 => Move cursor downward</span>
<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 => Move cursor to the left</span>
<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 => Move cursor to the right</span>
<span style="color:#644a9b;font-weight:bold">*&lt;#RCtrl</span><span style="color:#ca60ca">::</span> <span style="color:#898887">; LeftWin + RightControl => Left-click (hold down Control/Shift to Control-Click or Shift-Click).</span>
<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>
<span style="color:#644a9b;font-weight:bold">KeyWait</span> RCtrl <span style="color:#898887">; Prevents keyboard auto-repeat from repeating the mouse click.</span>
<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>
<span style="font-weight:bold">return</span>
<span style="color:#644a9b;font-weight:bold">*&lt;#AppsKey</span><span style="color:#ca60ca">::</span> <span style="color:#898887">; LeftWin + AppsKey => Right-click</span>
<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>
<span style="color:#644a9b;font-weight:bold">KeyWait</span> AppsKey <span style="color:#898887">; Prevents keyboard auto-repeat from repeating the mouse click.</span>
<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>
<span style="font-weight:bold">return</span>
<span style="color:#aa5500">#Persistent</span> <span style="color:#898887">; Keep this script running until the user explicitly exits it.</span>
<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>
<span style="font-weight:bold">return</span>
WatchPOV:
POV <span style="color:#ca60ca">:=</span> <span style="color:#644a9b;font-weight:bold">GetKeyState</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"JoyPOV"</span><span style="color:#ca60ca">)</span> <span style="color:#898887">; Get position of the POV control.</span>
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>
<span style="color:#898887">; Some joysticks might have a smooth/continous POV rather than one in fixed increments.</span>
<span style="color:#898887">; To support them all, use a range:</span>
<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>
KeyToHoldDown <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">""</span>
<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">></span> <span style="color:#b08000">31500</span><span style="color:#ca60ca">)</span> <span style="color:#898887">; 315 to 360 degrees: Forward</span>
KeyToHoldDown <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"Up"</span>
<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>
KeyToHoldDown <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"Up"</span>
<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>
KeyToHoldDown <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"Right"</span>
<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>
KeyToHoldDown <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"Down"</span>
<span style="font-weight:bold">else</span> <span style="color:#898887">; 225 to 315 degrees: Left</span>
KeyToHoldDown <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"Left"</span>
<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>
<span style="font-weight:bold">return</span> <span style="color:#898887">; Do nothing.</span>
<span style="color:#898887">; Otherwise, release the previous key and press down the new key:</span>
<span style="color:#644a9b;font-weight:bold">SetKeyDelay</span> -1 <span style="color:#898887">; Avoid delays between keystrokes.</span>
<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>
<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>
<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>
<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>
<span style="font-weight:bold">return</span>
<span style="color:#644a9b;font-weight:bold">&lt;^>!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>.
<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>.
<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">></span> to cycle through windows.
<span style="color:#644a9b;font-weight:bold">AppsKey Up</span><span style="color:#ca60ca">::</span><span style="color:#644a9b;font-weight:bold">ToolTip</span>
<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>
<span style="color:#644a9b;font-weight:bold">~AppsKey &amp; ></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>
<span style="color:#898887">; Press AppsKey and Alt in any order, then slash (/).</span>
<span style="color:#aa5500">#if</span> <span style="color:#644a9b;font-weight:bold">GetKeyState</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"AppsKey"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"P"</span><span style="color:#ca60ca">)</span>
<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.
<span style="color:#898887">; If the keys are swapped, Alt must be pressed first (use one at a time):</span>
<span style="color:#aa5500">#if</span> <span style="color:#644a9b;font-weight:bold">GetKeyState</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"Alt"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"P"</span><span style="color:#ca60ca">)</span>
<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.
<span style="color:#898887">; [ &amp; ] &amp; \::</span>
<span style="color:#aa5500">#if</span> <span style="color:#644a9b;font-weight:bold">GetKeyState</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"["</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">"]"</span><span style="color:#ca60ca">)</span>
\::<span style="color:#644a9b;font-weight:bold">MsgBox</span>
<span style="color:#898887">; Ctrl+Shift+O to open containing folder in Explorer.</span>
<span style="color:#898887">; Ctrl+Shift+E to open folder with current file selected.</span>
<span style="color:#898887">; Supports SciTE and Notepad++.</span>
<span style="color:#644a9b;font-weight:bold">^+o</span><span style="color:#ca60ca">::</span>
<span style="color:#644a9b;font-weight:bold">^+e</span><span style="color:#ca60ca">::</span>
editor_open_folder<span style="color:#ca60ca">()</span> <span style="color:#ca60ca">{</span>
<span style="color:#644a9b;font-weight:bold">WinGetTitle</span><span style="color:#ca60ca">,</span> path<span style="color:#ca60ca">,</span> A
<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">"\*?\K(.*)\\[^\\]+(?= [-*] )"</span><span style="color:#ca60ca">,</span> <span style="color:#0057ae">path</span><span style="color:#ca60ca">)</span>
<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">"^+e"</span><span style="color:#ca60ca">)</span>
<span style="color:#644a9b;font-weight:bold">Run</span> explorer.exe /select<span style="color:#3daee9">`,</span>"<span style="color:#0057ae">%path%</span>"
<span style="font-weight:bold">else</span>
<span style="color:#644a9b;font-weight:bold">Run</span> explorer.exe "<span style="color:#0057ae">%path1%</span>"
<span style="color:#ca60ca">}</span>
<span style="color:#644a9b;font-weight:bold">#h</span><span style="color:#ca60ca">::</span> <span style="color:#898887">; Win+H hotkey</span>
<span style="color:#898887">; Get the text currently selected. The clipboard is used instead of</span>
<span style="color:#898887">; "ControlGet Selected" because it works in a greater variety of editors</span>
<span style="color:#898887">; (namely word processors). Save the current clipboard contents to be</span>
<span style="color:#898887">; restored later. Although this handles only plain text, it seems better</span>
<span style="color:#898887">; than nothing:</span>
<span style="color:#644a9b;font-weight:bold">AutoTrim</span> Off <span style="color:#898887">; Retain any leading and trailing whitespace on the clipboard.</span>
ClipboardOld <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">ClipboardAll</span>
<span style="color:#0057ae">Clipboard</span> <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">""</span> <span style="color:#898887">; Must start off blank for detection to work.</span>
<span style="color:#644a9b;font-weight:bold">Send</span> <span style="color:#644a9b;font-weight:bold">^c</span>
<span style="color:#644a9b;font-weight:bold">ClipWait</span> 1
<span style="font-weight:bold">if</span> <span style="color:#0057ae">ErrorLevel</span> <span style="color:#898887">; ClipWait timed out.</span>
<span style="font-weight:bold">return</span>
<span style="color:#898887">; Replace CRLF and/or LF with `n for use in a "send-raw" hotstring:</span>
<span style="color:#898887">; The same is done for any other characters that might otherwise</span>
<span style="color:#898887">; be a problem in raw mode:</span>
<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>
<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>
<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
<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
<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
<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>
<span style="color:#898887">; This will move the InputBox's caret to a more friendly position:</span>
<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>
<span style="font-weight:bold">if</span> <span style="color:#0057ae">ErrorLevel</span> <span style="color:#898887">; The user pressed Cancel.</span>
<span style="font-weight:bold">return</span>
<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">":R</span><span style="color:#3daee9">`::</span><span style="color:#bf0303">:"</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">{</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> You didn't provide an abbreviation. The hotstring has not been added.
<span style="font-weight:bold">return</span>
<span style="color:#ca60ca">}</span>
<span style="color:#898887">; Otherwise, add the hotstring and reload the script:</span>
<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>
<span style="color:#644a9b;font-weight:bold">Reload</span>
<span style="font-weight:bold">Sleep</span> <span style="color:#b08000">200</span>
<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.
<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>
<span style="font-weight:bold">return</span>
MoveCaret:
<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>
<span style="font-weight:bold">return</span>
<span style="color:#898887">; Otherwise, move the InputBox's insertion point to where the user will type the abbreviation.</span>
<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>
<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>
<span style="font-weight:bold">return</span>
<span style="color:#898887">; This example also demonstrates one way to implement case conformity in a script.</span>
<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>
<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>
<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>
case_conform_btw<span style="color:#ca60ca">()</span> <span style="color:#ca60ca">{</span>
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>
<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">":C:BTW"</span><span style="color:#ca60ca">)</span>
<span style="color:#644a9b;font-weight:bold">Send</span> BY THE WAY
<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">":C:Btw"</span><span style="color:#ca60ca">)</span>
<span style="color:#644a9b;font-weight:bold">Send</span> By the way
<span style="font-weight:bold">else</span>
<span style="color:#644a9b;font-weight:bold">Send</span> by the way
<span style="color:#ca60ca">}</span>
<span style="color:#aa5500">#IfWinActive</span> <span style="font-weight:bold">ahk_class</span> Notepad
<span style="color:#ca60ca">::</span>btw<span style="color:#ca60ca">::</span>This replacement text will appear only in Notepad.
<span style="color:#aa5500">#IfWinActive</span>
<span style="color:#ca60ca">::</span>btw<span style="color:#ca60ca">::</span>This replacement text appears in windows other than Notepad.
<span style="color:#aa5500">#Hotstring</span> EndChars -()[]{}:<span style="color:#898887">;'"/\,.?!`n `t</span>
<span style="color:#644a9b">Hotstring</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"EndChars"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"-()[]{}:;"</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">::</span>btw<span style="color:#ca60ca">::</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> You typed "<span style="color:#3daee9">``</span>btw<span style="color:#3daee9">``</span>".
<span style="font-weight:bold">return</span>
<span style="color:#ca60ca">:*:</span>]d<span style="color:#ca60ca">::</span> <span style="color:#898887">; This hotstring replaces "]d" with the current date and time via the commands below.</span>
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">""</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">{</span>
<span style="font-weight:bold">return</span> <span style="color:#bf0303">"a value"</span>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">Loop</span> <span style="color:#b08000">3</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span><span style="color:#0057ae">MyArray%A_Index%</span>
<span style="color:#644a9b;font-weight:bold">SysGet</span><span style="color:#ca60ca">,</span> WA<span style="color:#ca60ca">,</span> MonitorWorkArea
<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>.
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>
<span style="color:#644a9b;font-weight:bold">FileAppend</span><span style="color:#ca60ca">,</span> <span style="color:#898887">; Comment.</span>
<span style="color:#898887">; Comment.</span>
( <span style="color:#644a9b">LTrim</span> <span style="font-weight:bold">Join</span> <span style="color:#898887">; Comment.</span>
<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>
), C:\File.txt <span style="color:#898887">; Comment.</span>
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>
<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>
<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>
<span style="color:#ca60ca">}</span>
<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>
<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>
str <span style="color:#ca60ca">.=</span> param . sep
<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>
<span style="color:#ca60ca">}</span>
<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">"</span><span style="color:#3daee9">`n</span><span style="color:#bf0303">"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"one"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"two"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"three"</span><span style="color:#ca60ca">)</span>
LogToFile<span style="color:#ca60ca">(</span><span style="color:#0057ae">TextToLog</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">{</span>
<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>
<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>
<span style="color:#ca60ca">}</span>
SetDefaults<span style="color:#ca60ca">()</span>
<span style="color:#ca60ca">{</span>
<span style="font-weight:bold">global</span>
MyGlobal <span style="color:#ca60ca">:=</span> <span style="color:#b08000">33</span>
<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>
<span style="color:#ca60ca">}</span>
LogToFile<span style="color:#ca60ca">(</span><span style="color:#0057ae">TextToLog</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">{</span>
<span style="font-weight:bold">static</span> <span style="color:#0057ae">LoggedLines</span> <span style="color:#ca60ca">:=</span> <span style="color:#b08000">0</span>
LoggedLines <span style="color:#ca60ca">+=</span> <span style="color:#b08000">1</span>
<span style="font-weight:bold">global</span> <span style="color:#0057ae">LogFileName</span>
<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>
<span style="color:#ca60ca">}</span>
GetFromStaticArray<span style="color:#ca60ca">(</span><span style="color:#0057ae">WhichItemNumber</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">{</span>
<span style="font-weight:bold">static</span>
<span style="font-weight:bold">static</span> <span style="color:#0057ae">FirstCallToUs</span> <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">true</span>
<span style="font-weight:bold">if</span> <span style="color:#0057ae">FirstCallToUs</span>
<span style="color:#ca60ca">{</span>
FirstCallToUs <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">false</span>
<span style="font-weight:bold">Loop</span> <span style="color:#b08000">10</span>
StaticArray<span style="color:#0057ae">%A_Index%</span> <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"Value #"</span> <span style="color:#ca60ca">.</span> <span style="color:#0057ae">A_Index</span>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">return</span> <span style="color:#0057ae">StaticArray%WhichItemNumber%</span>
<span style="color:#ca60ca">}</span>
<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">""</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>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#0057ae">%ColorName%</span> could not be found.
<span style="font-weight:bold">class</span> baseObject <span style="color:#ca60ca">{</span>
<span style="font-weight:bold">static</span> <span style="color:#0057ae">foo</span> <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"bar"</span>
}
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">"bar"</span><span style="color:#ca60ca">}</span>
thing <span style="color:#ca60ca">:=</span> <span style="color:#ca60ca">{}</span>
thing<span style="color:#ca60ca">.</span>foo <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">"bar"</span>
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">"thing_test"</span><span style="color:#ca60ca">)</span>
thing<span style="color:#ca60ca">.</span>test<span style="color:#ca60ca">()</span>
thing_test<span style="color:#ca60ca">(</span><span style="font-weight:bold">this</span><span style="color:#ca60ca">)</span> <span style="color:#ca60ca">{</span>
<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>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">class</span> Color
<span style="color:#ca60ca">{</span>
<span style="font-weight:bold">__New</span><span style="color:#ca60ca">(</span><span style="color:#0057ae">aRGB</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">{</span>
<span style="font-weight:bold">this</span><span style="color:#ca60ca">.</span>RGB <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">aRGB</span>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">__Delete</span><span style="color:#ca60ca">()</span>
<span style="color:#ca60ca">{</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span><span style="color:#bf0303">"Delete Color."</span>
<span style="color:#ca60ca">}</span>
<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>
<span style="font-weight:bold">__Get</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:#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>
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>
<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">""</span><span style="color:#ca60ca">)</span> <span style="color:#898887">; Is it a known property?</span>
<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">>></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>
<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>
<span style="color:#ca60ca">}</span>
<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>
<span style="color:#ca60ca">{</span>
<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">""</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">{</span>
aValue <span style="color:#ca60ca">&amp;=</span> <span style="color:#b08000">255</span> <span style="color:#898887">; Truncate it to the proper range.</span>
<span style="color:#898887">; Calculate and store the new RGB value.</span>
<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>
<span style="color:#898887">; 'Return' must be used to indicate a new key-value pair should not be created.</span>
<span style="color:#898887">; This also defines what will be stored in the 'x' in 'x := clr[name] := val':</span>
<span style="font-weight:bold">return</span> <span style="color:#0057ae">aValue</span>
<span style="color:#ca60ca">}</span>
<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>
<span style="color:#ca60ca">}</span>
<span style="color:#898887">; Meta-functions can be mixed with properties:</span>
<span style="font-weight:bold">RGB</span> <span style="color:#ca60ca">{</span>
<span style="font-weight:bold">get</span> <span style="color:#ca60ca">{</span>
<span style="color:#898887">; Return it in hex format:</span>
<span style="font-weight:bold">return</span> <span style="color:#644a9b">format</span><span style="color:#ca60ca">(</span><span style="color:#bf0303">"0x{:06x}"</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>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">set</span> <span style="color:#ca60ca">{</span>
<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>
<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">class</span> __Get extends Properties
<span style="color:#ca60ca">{</span>
R<span style="color:#ca60ca">()</span> <span style="color:#ca60ca">{</span>
<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">>></span> <span style="color:#b08000">16</span><span style="color:#ca60ca">)</span> <span style="color:#ca60ca">&amp;</span> <span style="color:#b08000">255</span>
<span style="color:#ca60ca">}</span>
G<span style="color:#ca60ca">()</span> <span style="color:#ca60ca">{</span>
<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">>></span> <span style="color:#b08000">8</span><span style="color:#ca60ca">)</span> <span style="color:#ca60ca">&amp;</span> <span style="color:#b08000">255</span>
<span style="color:#ca60ca">}</span>
B<span style="color:#ca60ca">()</span> <span style="color:#ca60ca">{</span>
<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>
<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">Property</span><span style="color:#ca60ca">[]</span> <span style="color:#898887">; Brackets are optional</span>
<span style="color:#ca60ca">{</span>
<span style="font-weight:bold">get</span> <span style="color:#ca60ca">{</span>
<span style="font-weight:bold">return</span> <span style="color:#ca60ca">...</span>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">set</span> <span style="color:#ca60ca">{</span>
<span style="font-weight:bold">return</span> <span style="color:#ca60ca">...</span> <span style="color:#ca60ca">:=</span> <span style="color:#0057ae">value</span>
<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">class</span> Properties extends FunctionObject
<span style="color:#ca60ca">{</span>
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>
<span style="color:#ca60ca">{</span>
<span style="color:#898887">; If this Properties object contains a definition for this half-property, call it.</span>
<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>
<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>
<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">}</span>
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>
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>
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>
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">"MyGet"</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">"MySet"</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">"MyCall"</span><span style="color:#ca60ca">)</span> <span style="color:#ca60ca">}</span>
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>
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>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span><span style="color:#bf0303">"red: "</span> <span style="color:#0057ae">red</span><span style="color:#ca60ca">.</span><span style="color:#0057ae">R</span> <span style="color:#bf0303">","</span> <span style="color:#0057ae">red</span><span style="color:#ca60ca">.</span><span style="color:#0057ae">G</span> <span style="color:#bf0303">","</span> <span style="color:#0057ae">red</span><span style="color:#ca60ca">.</span><span style="color:#0057ae">B</span> <span style="color:#bf0303">" = "</span> <span style="color:#0057ae">red</span><span style="color:#ca60ca">.</span><span style="font-weight:bold">RGB</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span> <span style="color:#ca60ca">% </span><span style="color:#bf0303">"cyan: "</span> <span style="color:#0057ae">cyan</span><span style="color:#ca60ca">.</span><span style="color:#0057ae">R</span> <span style="color:#bf0303">","</span> <span style="color:#0057ae">cyan</span><span style="color:#ca60ca">.</span><span style="color:#0057ae">G</span> <span style="color:#bf0303">","</span> <span style="color:#0057ae">cyan</span><span style="color:#ca60ca">.</span><span style="color:#0057ae">B</span> <span style="color:#bf0303">" = "</span> <span style="color:#0057ae">cyan</span><span style="color:#ca60ca">.</span><span style="font-weight:bold">RGB</span>
<span style="color:#898887">; This example requires the FunctionObject class in order to work.</span>
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>
<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">","</span> <span style="color:#0057ae">blue</span><span style="color:#ca60ca">.</span><span style="color:#0057ae">G</span> <span style="color:#bf0303">","</span> <span style="color:#0057ae">blue</span><span style="color:#ca60ca">.</span><span style="color:#0057ae">B</span>
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">"x_Addr"</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">"x_Setter"</span><span style="color:#ca60ca">)}}</span>
<span style="color:#898887">; Assign value, implicitly calling x_Setter to create sub-objects.</span>
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">"..."</span>
<span style="color:#898887">; Retrieve value and call example method.</span>
<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">"</span><span style="color:#3daee9">`n</span><span style="color:#bf0303">"</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">"</span><span style="color:#3daee9">`n</span><span style="color:#bf0303">"</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">"</span><span style="color:#3daee9">`n</span><span style="color:#bf0303">"</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>
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>
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>
<span style="color:#ca60ca">}</span>
x_Addr<span style="color:#ca60ca">(</span><span style="color:#0057ae">x</span><span style="color:#ca60ca">)</span> <span style="color:#ca60ca">{</span>
<span style="font-weight:bold">return</span> <span style="color:#ca60ca">&amp;</span><span style="color:#0057ae">x</span>
<span style="color:#ca60ca">}</span>
<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?
<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">"Bill"</span><span style="color:#ca60ca">)</span>
<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>.
<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?
<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">"yes"</span><span style="color:#ca60ca">)</span>
<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.
<span style="font-weight:bold">else</span>
<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.
<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?
<span style="font-weight:bold">IfMsgBox</span><span style="color:#ca60ca">,</span> <span style="font-weight:bold">No</span>
<span style="font-weight:bold">return</span> <span style="color:#898887">; If No, stop the code from going further.</span>
<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>
<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">"old"</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">{</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span><span style="color:#ca60ca">,</span> The car is really old.
<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">"flat"</span><span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">{</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span><span style="color:#ca60ca">,</span> This car is not safe to drive.
<span style="font-weight:bold">return</span>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">else</span>
<span style="color:#ca60ca">{</span>
<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.
<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">}</span>
<span style="font-weight:bold">else</span>
<span style="color:#ca60ca">{</span>
<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.
<span style="color:#ca60ca">}</span>
<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">"Red"</span> <span style="font-weight:bold">or</span> <span style="font-weight:bold">Color</span> <span style="color:#ca60ca">=</span> <span style="color:#bf0303">"Green"</span> <span style="font-weight:bold">or</span> <span style="font-weight:bold">Color</span> <span style="color:#ca60ca">=</span> <span style="color:#bf0303">"Blue"</span> <span style="color:#898887">; Comment.</span>
<span style="font-weight:bold">or</span> <span style="font-weight:bold">Color</span> <span style="color:#ca60ca">=</span> <span style="color:#bf0303">"Black"</span> <span style="font-weight:bold">or</span> <span style="font-weight:bold">Color</span> <span style="color:#ca60ca">=</span> <span style="color:#bf0303">"Gray"</span> <span style="font-weight:bold">or</span> <span style="font-weight:bold">Color</span> <span style="color:#ca60ca">=</span> <span style="color:#bf0303">"White"</span><span style="color:#ca60ca">)</span> <span style="color:#898887">; Comment.</span>
<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>
<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">""</span><span style="color:#ca60ca">)</span>
codepage <span style="color:#ca60ca">:=</span> <span style="color:#bf0303">" /CP"</span> <span style="color:#ca60ca">.</span> <span style="color:#0057ae">codepage</span>
cmd<span style="color:#ca60ca">=</span>"<span style="color:#0057ae">%A_AhkPath%</span>"<span style="color:#0057ae">%codepage%</span> "<span style="color:#3daee9">`%</span>1" <span style="color:#3daee9">`%</span><span style="color:#644a9b;font-weight:bold">*</span>
key<span style="color:#ca60ca">=</span>AutoHotkeyScript\Shell\Open\Command
<span style="font-weight:bold">if</span> <span style="color:#0057ae">A_IsAdmin</span> <span style="color:#898887">; Set for all users.</span>
<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>
<span style="font-weight:bold">else</span> <span style="color:#898887">; Set for current user only.</span>
<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>
<span style="color:#644a9b;font-weight:bold">^j</span><span style="color:#ca60ca">::</span> <span style="color:#898887">; hotkey label</span>
<span style="color:#644a9b;font-weight:bold">MsgBox</span><span style="color:#ca60ca">,</span> You typed btw.
</pre></body></html>