腳本英雄 Scripting Hero ( 版本: 2.1.5 Pro )
__________________________________________________( 關於 )

(1) [ 腳本英雄 ] 為本人(余明倫 ymlk)自主研發創造出來的程式,本人保有著作權以及最後解釋權。
(2) [ 腳本英雄 ] 主程式Hero.exe,禁止修改及轉賣,發現不當行為請立刻通知本作者。
(3)本人同意可以任何形式轉發 [ 腳本英雄 ],須註明來源出處及原作者。
(4)編寫完成之腳本文件(.TXT檔),不得用於商業用途,希望能夠分享給大家。

注意事項如下:
(1)主程式會綁電腦序號,即可重灌 Windows 不受影響。(格式化及模組化受到周圍變更的影響)
(2)若要換電腦系統,原有雲端帳號匹配後不符合,必須重新購買,恕不補發或退款,提醍注意。
(3)線上遊戲加裝防外掛系統,主程式不一定可行用,如果無法可行用就算了,恕不補發或退款。
(4)主程式掛線上遊戲有機率百分之不準確計算,官方取締抓到不法行為遭帳號被封鎖,否則後果自行負責,恕不補發或退款。

InternetWeb -> http://ymlk.myds.me
FaceBook    -> https://www.facebook.com/ScriptingHero

__________________________________________________( 免費付費說明 )

腳本英雄有分二者

(1)免費一般腳本程式,不包含特殊功能(繞過神盾和讀寫記憶體)
    ~Lib.MouseMsg   -> 未開繞過神盾,使用普通功能
    ~Lib.KeybdMsg   -> 未開繞過神盾,使用普通功能
    ~Lib.Backstage  -> 需要輸入驗證碼
    ~Lib.ScanMemory -> 需要輸入驗證碼
    ~Lib.ByteMemory -> 需要輸入驗證碼
    ~Lib.InjectDLL  -> 需要輸入驗證碼


(2)付費特殊功能(繞過神盾和讀寫記憶體)
   需要試用功能,請線上輸入驗證碼,通過後給你15分鐘執行。
   http://ymlk.myds.me/check/

__________________________________________________( 記憶碼備份保存.MCODE )

防止神盾攔截搶走控制權
請輸入腳本檔名:.MCODE (輸入之前時請不要開遊戲和神盾,否則會失效)
執行一次後,程式本身的記憶碼拷貝保存留下來記憶庫,不用重覆再次輸入。
腳本寫上第一行
~Lib.MCODE() 恢復記憶碼
如果有Windows 10重大更新版,請再次輸入一次 .MCODE 立即生效

注意:腳本英雄正常繞過神盾功能,不需要可先略過 .MCODE 和 ~Lib.MCODE()


__________________________________________________( 程式參考重點 )

Encoding是編碼格式的文字預設為ANSI,不是Unicode、 UCS-2、UTF-8碼格式。
字符 Byte:1024  是一行長度總共個字符,超過記憶庫以上發生錯誤。
變量 Byte:2048  是 $xxx 總共內存變量,超過記憶庫以上發生錯誤。
行數 Byte:3072  是 Line 總共內存行數,超過記憶庫以上發生錯誤。

__________________________________________________( 自動執行 AutoSH.txt )

Hero.exe在旁邊另有一個 [AutoSH.txt] 就會自動執行腳本

__________________________________________________( 打包生成.EXE )

請輸入腳本檔名:.EXE
Input  File(.txt):輸入來源腳本文件
Output File(.exe):輸出執行檔名

__________________________________________________( 程式暫停執行 )

組合鍵[暫停]:Shift + Esc
console視窗內按[enter]啟動工作

__________________________________________________( 開頭符號 $ 是局域變量 )

$aaa = 1
$bbb = 10 / 2
$ccc = $aaa + ( 20 * 2 ) - $bbb

__________________________________________________( 支援多重陣列變量,後面需要加 [] )

$aaa[1] = 10
$aaa[1][2] = 20
$bbb = $aaa[1] + $aaa[1][2]

__________________________________________________( 公開變量 $PRF. 不管全域變量和局部變量什麼都能通 )

$prf.a = 123
Def: Call()
    ~Dos.Print($prf.a "\x0a")
End Def
~Call()
~Dos.System("pause")

註: $PRF. 變量未設置自動補給設定 = 0

__________________________________________________( 數學符號運算 )

$aaa = (1 + 2)  '圓括號
$aaa = 1 * 2    '乘法
$aaa = 1 / 2    '除法
$aaa = 1 + 2    '加法
$aaa = 1 - 2    '減法
$aaa = 1 % 2    '餘數
$aaa = 4 &= 4   '邏輯 AND 運算子
$aaa = 2 |= 4   '邏輯 OR  運算子
$aaa = 2 ^= 4   '邏輯 XOR 運算子
$aaa = 100 << 2 '位元左移 1=100+100->200  2=200+200->400
$aaa = 100 >> 2 '位元右移 1=25+25->50     2=50+50->100

__________________________________________________( ++ -- 符號優先前後計算加減1 )

$i = 0
++$i '前置遞增(先加1再傳回變數)
--$i '前置遞減(先減1再傳回變數)
$i++ '後置遞增(先傳回變數再加1)
$i-- '後置遞減(先傳回變數再減1)
Cmp( $i++ < 10 )
    ~Dos.Print($i "\x0a")
Loop
~Dos.System("Pause")

__________________________________________________( 條件判斷式 )

Cmp   (條件比較)
      '條件成立時,執行這裡的敘述。
End


Cmp   (條件比較)
      '條件成立時,執行這裡的敘述。
ElCmp (否則條件比較)
      '條件成立時,執行這裡的敘述。
End


'範例說明
Cmp(1==2)
        ~Dos.Print("對不對\x0a")
ElCmp(2==2)
        ~Dos.Print("對\x0a")
ElCmp()
        ~Dos.Print("不對\x0a")
End
~Dos.System("pause")

__________________________________________________( 迴圈條件判斷式 )

Cmp   (條件比較)
      '條件成立時,執行這裡的敘述。
Loop  (條件比較)


Cmp   (條件比較)
      '條件成立時,執行這裡的敘述。
ElCmp (否則條件比較)
      '條件成立時,執行這裡的敘述。
Loop  (條件比較)

__________________________________________________( Break )

Cmp (條件比較)
    '條件成立時,執行這裡的敘述。
    Break
    '中斷迴圈。
Loop

__________________________________________________( Continue )

Cmp (條件比較)
    '條件成立時,執行這裡的敘述。
    Continue
    '略過條件,不執行這裡的敘述。
Loop

__________________________________________________( 執行條件判斷結果 )

Cmp (1) 或 Cmp ()
    '執行迴圈主體。
Loop


Cmp (0)
    '不執行迴圈主體。
Loop


Cmp (123 == 456)
        '== 等於條件。
End


Cmp (123 <> 456)
        '<> 不等於條件。
End


Cmp (123 <= 456)
        '<= 小於到大於等於條件。
End


Cmp (123 >= 456)
        '>= 大於到小於等於條件。
End


Cmp (123 < 456)
        '< 小於到大於條件。
End


Cmp (123 > 456)
        '> 大於到小於條件。
End


Cmp (123 == 456 && 789 == 123)
        '&& 和等於條件。
End


Cmp (123 == 456 || 789 == 123)
        '|| 或等於條件。
End

__________________________________________________( Loop可替Cmp條件判斷式 )

$a = 0
Cmp
    ~Dos.Print($a++"\x0a")
Loop ($a < 10)
~dos.system("pause")

__________________________________________________( GoTo 跳轉標籤 )

:Main
...
GoTo Main


GoTo Main
...
:Main

__________________________________________________( Exit 離開主程式 )

Exit

__________________________________________________( #Import 插入腳本文件 )

'插入腳本文件
#Import "Script.txt"

__________________________________________________( 特殊字符 )

\x 限2個位元,範圍內 00 ~ FF
~Dos.Print("  \x0a  ")  '換行字符
~Dos.Print("  \x0d  ")  '歸位字符
~Dos.Print("  \x09  ")  'Tab
~Dos.Print("  \x5c  ")  '\ 符號
~Dos.Print("  \x28  ")  '( 符號
~Dos.Print("  \x29  ")  ') 符號
~Dos.Print("  \x22  ")  '" 符號
~Dos.Print("  \x2c  ")  ', 符號

__________________________________________________( '註解符號 )

'註解符號不會受到影響執行
~Dos.Print("12345")  '註解符號不會受到影響執行

__________________________________________________( </ ... /> 區域內註解 )

~Dos.Print("弟弟,看到我嗎?\x0a")
</
~Dos.Print("妹妹,看到我嗎?\x0a")
/>
~Dos.System("pause")
__________________________________________________( 後尾 \ 連接詞 )

'注意:(字符 Byte)個字符有限制,超過個字符以上已略過處理。
~Dos.Print("12345" \
           "abcde" \
           "ABCDE")

__________________________________________________( 16進位轉換10進位 )

'0x 不限位元,範圍內 0 ~ F
$aaa = 0x123

__________________________________________________( 使用 Def: ... End Def )

Def:  函式名稱( 參數1 , 參數2 ... )
     '函式內容,無回傳值。
End Def

__________________________________________________( Return 返回值 )

Def:  函式名稱( 參數1 , 參數2 ... )
     '函式內容,有返回值( Return )。
     Return 返回值數據資料。
End Def

__________________________________________________( 符號 ~ 使用呼叫函數 Def: )

'Def: ... End Def 區域內結構 $Var 表示局部變量,不是全域變量。

Def: ABC($a, $b)
        ~Dos.Print($a " + " $b " = ")
        ~Dos.Print($a + $b)
        ~Dos.Print("\x0a")
End Def

~ABC(1, 2) '呼叫 ABC 程序
~Dos.System("pause")

__________________________________________________( 陣列參數 $argv[] )

Def: ABC($argv[])
        ~Dos.Print($argv.length "\x0a" \
                   $argv[0]     "\x0a" \
                   $argv[1]     "\x0a" \
                   $argv[2]     "\x0a")
End Def

~ABC(10, 20, 30)
~Dos.System("pause")

__________________________________________________( 內建函式說明 )

~DLLMsg 呼叫 WinAPI 訊息,有兩個(int 整數 , str 字串)傳遞訊息和資料型別返回值
整數資料型別:int
字串資料型別:str
參數僅限型別:整數,字串  <不支援:雙精度浮點數>
~DLLMsg(檔案模組, 資料型別, 函數名稱, 傳遞資料, 傳遞資料, 傳遞資料, ...) '最多 13 個參數
回傳值:無/有

如果有數值要傳送當字串的話,請前頭 @ 符號轉字串
$a = ~DLLMsg("User32.DLL", "int", "MessageBoxA", 0, 12345, "Message", 0)
參數: 12345 傳送訊息會崩潰的問題,請改 @12345 傳送字串訊息
$a = ~DLLMsg("User32.DLL", "int", "MessageBoxA", 0, @12345, "Message", 0)
計算公式用變數可支援 @$count
$count = 1 + 2 + 3 + 4 + 5
$a = ~DLLMsg("User32.DLL", "int", "MessageBoxA", 0, @$count, "Message", 0)

---------------------------------------------------------------------------------------------------

~DLLMsg支援ByRef有四個資料型別 <int_ref> <&int_ref> <str_ref> <&str_ref> 讀取DLLMsg參數返回數據
整數資料型別:<int_ref> <&int_ref>
字串資料型別:<str_ref> <&str_ref>
$hWnd = ~DLLMsg("User32.DLL", "int", "FindWindowA", 0, "BlueStacks")
$ref = ""
~DLLMsg("User32.DLL", "int", "GetClassNameA", $hWnd, <str_ref>$ref, 255)
~Dos.Print($ref "\x0a")
回傳值:有

---------------------------------------------------------------------------------------------------

~COMMsg 呼叫 Activex DLL(COM) 訊息,有兩個(int 整數 , str 字串)傳遞訊息和資料型別返回值
整數資料型別:int
字串資料型別:str
參數僅限型別:雙精度浮點數,整數,字串
~COMMsg(COM模組, 資料型別, 函數名稱, 傳遞資料, 傳遞資料, 傳遞資料, ...) '最多 13 個參數
回傳值:無/有

示範: ~COMMsg實現呼叫自動說話功能
$code = "你好嗎"
~COMMsg("Wscript.Shell", "int", "Run", "cmd.exe /c echo " $code "| clip.exe", 0) '啟動剪貼簿
~COMMsg("Wscript.Shell", "int", "Run", "notepad.exe") '啟動記事本
Cmp(1)
    ~Lib.Sleep(1000)
    ~COMMsg("Wscript.Shell", "int", "sendkeys", "^v") '貼上
Loop

如果有數值要傳送當字串的話,請前頭 @ 符號轉字串(請參考 ~DLLMsg 同上)

---------------------------------------------------------------------------------------------------

~COMMsg支援ByRef有二個資料型別 <int_ref> <str_ref> 讀取COMMsg參數返回數據
整數資料型別:<int_ref>
字串資料型別:<str_ref>
$intX = 0
$intY = 0
$ret  = ~COMMsg("dm.dmsoft", "int", "FindPic", 0, 0, 2000, 2000, "C:\abc.bmp", "000000", 0.9, 0, <int_ref>$intX, <int_ref>$intY)
~Dos.Print($intX "\x0a")
~Dos.Print($intY "\x0a")
回傳值:有

############################################################################################( Lib )

綁定窗口(限制64位元應用程式)
~Lib.BackStage(視窗句柄, 座標 X, 座標 Y)
回傳值:無

有分三者綁定窗口
======================================================================
(1)

~Lib.BackStage($hWnd, $x, $y)
座標綁定窗口,滑鼠手動操作由鼠標無法移過去。
判斷座標需要來源[Alt + Print Screen 組合鍵]截圖放在小畫家讀取像素座標

(2)
~Lib.BackStage($hWnd, 0, 0)
附加功用:恢復原來窗口狀態 / 綁定窗口後台句柄

示範: (記得要加~Lib.Sleep延遲處理)
$x = 1227
$y = 32
~Lib.BackStage($hWnd, $x, $y) '綁定窗口
~Lib.Sleep(100)
~Lib.MouseMsg($hWnd, 2, 0, 0, 0)
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 4, 0, 0, 0)
~Lib.Sleep(100)
~Lib.BackStage($hWnd, 0, 0)   '恢復原來窗口狀態

======================================================================
(3)
~Lib.BackStage($hWnd, -1,  0) '恢復滑鼠和鍵盤狀態
~Lib.BackStage($hWnd, -1,  1) '輸出滑鼠和鍵盤有消息

示範:
$x = 1227
$y = 32
~Lib.BackStage($hWnd, -1,  1)
'輸出滑鼠和鍵盤有消息
~Lib.MouseMsg($hWnd, 0, $x, $y, 0)
~Lib.MouseMsg($hWnd, 2, $x, $y, 0)
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 4, $x, $y, 0)
~Lib.BackStage($hWnd, -1,  0) 
'恢復滑鼠和鍵盤狀態


---------------------------------------------------------------------------------------------------


後台滑鼠訊息
~Lib.MouseMsg(視窗句柄, 訊息, 座標 X, 座標 Y, 活動窗口消息)
訊息     = 0     游標移動
訊息     = 2     游標移動 + 左按下
訊息     = 4     游標移動 + 左放開
訊息     = 8     游標移動 + 右按下
訊息     = 16    游標移動 + 右放開
訊息     = 120   前滾輪
訊息     = -120  後滾輪
活動窗口消息 = ( 0 = 無 / 1 = 輸出非活動窗口消息 / 2 = 輸出窗口消息 / 3 = 輸出前台滑鼠 )

回傳值:無

~LMouseClick(視窗句柄, 座標 X, 座標 Y, 延遲毫秒1, 延遲毫秒2) '滑鼠左鍵單點擊
Def: LMouseClick($hWnd, $x, $y, $Sleep1, $Sleep2)
       ~Lib.MouseMsg($hWnd, 0, $x, $y, 0)
       ~Lib.MouseMsg($hWnd, 2, $x, $y, 0)
       ~Lib.Sleep($Sleep1)
       ~Lib.MouseMsg($hWnd, 4, $x, $y, 0)
       ~Lib.Sleep($Sleep2)
End Def

~RMouseClick(視窗句柄, 座標 X, 座標 Y, 延遲毫秒1, 延遲毫秒2) '滑鼠右鍵單點擊
Def: RMouseClick($hWnd, $x, $y, $Sleep1, $Sleep2)
       ~Lib.MouseMsg($hWnd, 0, $x, $y, 0)
       ~Lib.MouseMsg($hWnd, 8, $x, $y, 0)
       ~Lib.Sleep($Sleep1)
       ~Lib.MouseMsg($hWnd, 16, $x, $y, 0)
       ~Lib.Sleep($Sleep2)
End Def


輸出前台滑鼠 判斷座標需要來源[Alt + Print Screen 組合鍵]截圖放在小畫家讀取像素座標
Def: LMouseClick($hWnd, $x, $y, $Sleep1, $Sleep2)
       ~DLLMsg("User32.DLL", "int", "SetForegroundWindow", $hWnd) '啟動窗口焦點
       ~Lib.Sleep(100)
       ~Lib.MouseMsg($hWnd, 0, $x, $y, 3)

       ~Lib.MouseMsg($hWnd, 2, $x, $y, 3)
       ~Lib.Sleep($Sleep1)
       ~Lib.MouseMsg($hWnd, 4, $x, $y, 3)
       ~Lib.Sleep($Sleep2)
End Def


---------------------------------------------------------------------------------------------------

後台鍵盤訊息
~Lib.KeybdMsg(視窗句柄, 訊息, 鍵碼, 活動窗口消息)
訊息     = 0  按下
訊息     = 2  放開
活動窗口消息 = ( 0 = 無 / 1 = 輸出非活動窗口消息 / 2 = 輸出窗口消息 / 3 = 輸出前台鍵盤 )

回傳值:無

~KeybdClick(視窗句柄, 鍵碼, 延遲毫秒1, 延遲毫秒2) '鍵盤單點擊
Def: KeybdClick($hWnd, $Vk, $Sleep1, $Sleep2)
        ~Lib.KeybdMsg($hWnd, 0, $Vk, 0)
        ~Lib.Sleep($Sleep1)
        ~Lib.KeybdMsg($hWnd, 2, $Vk, 0)
        ~Lib.Sleep($Sleep2)
End Def


輸出前台鍵盤
Def: KeybdClick($hWnd, $Vk, $Sleep1, $Sleep2)
        ~DLLMsg("User32.DLL", "int", "SetForegroundWindow", $hWnd) '啟動窗口焦點

        ~Lib.Sleep(100)
        ~Lib.KeybdMsg($hWnd, 0, $Vk,
3)
        ~Lib.Sleep($Sleep1)
        ~Lib.KeybdMsg($hWnd, 2, $Vk, 3)
        ~Lib.Sleep($Sleep2)
End Def


---------------------------------------------------------------------------------------------------

發送對話字符訊息
~Lib.SendString(視窗句柄, "字符模式", "字串訊息")
字符模式 = "A"  (單字元模式 ANSI)
字符模式 = "W"  (雙字元模式 Unicode / UTF-8)

回傳值:無

---------------------------------------------------------------------------------------------------

停留延遲
0.5秒 = 500  毫秒
1秒   = 1000 毫秒
~Lib.Sleep(毫秒/ms)
回傳值:無

---------------------------------------------------------------------------------------------------

16進位轉換10進位
~Lib.Dec(16進位)
回傳值:有

---------------------------------------------------------------------------------------------------

10進位轉換16進位
~Lib.Hex(10進位)
回傳值:有

---------------------------------------------------------------------------------------------------

彈出式輸入方塊
~Lib.InputBox("提示字串訊息", "字串設定置")
回傳值:有

---------------------------------------------------------------------------------------------------

RGB轉換10進位
~Lib.RGB(R數值, G數值, B數值)
回傳值:有

顏色數值轉換RGB碼
$Color = 12345678
$R = $Color % 256
$G = $Color / 256   % 256
$B = $Color / 65536 % 256
~Dos.Print("紅 red   = " $R "\x0a")
~Dos.Print("綠 green = " $G "\x0a")
~Dos.Print("藍 blue  = " $B "\x0a")
~Dos.System("pause")

---------------------------------------------------------------------------------------------------

取得視窗邊界區域資訊
~Lib.GetWiCr(視窗句柄, 旗標)
旗標 = 0     GetWindowRect.left
旗標 = 1     GetWindowRect.top
旗標 = 2     GetWindowRect.right
旗標 = 3     GetWindowRect.bottom
旗標 = 4     GetClientRect.left
旗標 = 5     GetClientRect.top
旗標 = 6     GetClientRect.right
旗標 = 7     GetClientRect.bottom
回傳值:有

---------------------------------------------------------------------------------------------------

讀取顏色值
~Lib.GetPixel(視窗句柄, 座標X, 座標Y)
回傳值:有
使用前先測試 ~Lib.Capture 數據資料狀況


---------------------------------------------------------------------------------------------------

搜尋色碼比對次數最多16個數據,返回值最多10個數據 [意思搜尋找到相同色碼再來繼續搜尋到完為止,總和次數和座標]

(1)固定位置顏色比對
~Lib.ScanPixel(視窗句柄, 左上角X, 左上角Y, 顏色值, Blurry | Rev | ScanXY)

(2)全搜尋顏色比對
~Lib.ScanPixel(視窗句柄, 左上角X (啟點), 左上角Y (啟點), 右下角X (終點), 右下角Y (終點), 顏色值, 模糊偏色值及反向色 Blurry | Rev | ScanXY)

模糊偏色值 Blurry = 0.5 ~ 1 (顏色是否變化 1 正常  0.5 ~ 0.9 模糊偏色)
反向色     Rev    = 0 正常色 / 1 反向色
縱橫       ScanXY = 0 往上到下  /  1 往左到右
回傳值:有 (零值 = 色碼不符合  /  非零值 = 色碼符合)
使用前先測試 ~Lib.Capture 數據資料狀況


示範(1):
$hWnd = ~DLLMsg("User32.DLL", "int", "FindWindowA", 0, "遊戲視窗名")
$Color = ~Lib.ScanPixel($hWnd, 100, 200, ~Lib.RGB(128,128,128)|~Lib.RGB(234,234,234), 0.9|0|0)
~Dos.Print($Color "\x0a")
~Dos.System("pause")

示範(2):
$hWnd = ~DLLMsg("User32.DLL", "int", "FindWindowA", 0, "遊戲視窗名")
$Color = ~Lib.ScanPixel($hWnd, 0, 0, ~Lib.GetWiCr($hWnd, 6), ~Lib.GetWiCr($hWnd, 7), ~Lib.RGB(128,128,128)|~Lib.RGB(234,234,234), 0.9|0|0)
~Dos.Print($Color "\x0a")
$Color = ~String.Split($Color, "\x0a")
Cmp($Color[0])
    $Color = ~String.Split($Color[1], " ")
    ~Dos.Print("X="$Color[1] " Y=" $Color[2] "\x0a")
ElCmp()
    ~Dos.Print("找不到啦\x0a")
End
~Dos.System("pause")

---------------------------------------------------------------------------------------------------

搜尋圖形比對次數最多64個數據,返回值最多10個數據 [意思搜尋找到相同圖色再來繼續搜尋到完為止,總和次數和座標]
注意( BMP )檔案存取限制24位元色彩和圖檔要求寬高為 1~100 * 1~50 像素

(1)固定位置圖形比對
~Lib.FindImage(視窗句柄, 左上角X, 左上角Y, BMP載入圖檔, Blurry | Filter | ScanXY)

(2)全搜尋圖形比對
~Lib.FindImage(視窗句柄, 左上角X (啟點), 左上角Y (啟點), 右下角X (終點), 右下角Y (終點), BMP載入圖檔, Blurry | Filter | ScanXY)

模糊偏色值 Blurry = 0.5 ~ 1 (顏色是否變化 1 正常  0.5 ~ 0.9 模糊偏色)
濾鏡       Filter = 0 ~ 5 ( 0 正常  /  1 濾鏡[反相]  /  2 濾鏡[馬賽克 2x2]  /  3 濾鏡[黑白]  /  4 濾鏡[細線]  /  5 濾鏡[10色] )
縱橫       ScanXY = 0 往上到下  /  1 往左到右
回傳值:有 (零值 = 圖色不符合  /  非零值 = 圖色符合)
使用前先測試 ~Lib.Capture 數據資料狀況


想要略過色碼先手動用小畫家編輯 BMP 原圖補色 RGB(255, 128, 1) => 略過色碼

示範(1):
$hWnd = ~DLLMsg("User32.DLL", "int", "FindWindowA", 0, "遊戲視窗名")
$Color = ~Lib.FindImage($hWnd, 100, 200, "圖檔1|圖檔2", 0.9|0|0)
~Dos.Print($Color "\x0a")
~Dos.System("pause")

示範(2):
$hWnd = ~DLLMsg("User32.DLL", "int", "FindWindowA", 0, "遊戲視窗名")
$Color = ~Lib.FindImage($hWnd, 0, 0, ~Lib.GetWiCr($hWnd, 6), ~Lib.GetWiCr($hWnd, 7), "目錄資料夾\|圖檔1|圖檔2", 0.9|0|0)
~Dos.Print($Color "\x0a")
$Color = ~String.Split($Color, "\x0a")
Cmp($Color[0])
    $Color = ~String.Split($Color[1], " ")
    ~Dos.Print("X="$Color[1] " Y=" $Color[2] "\x0a")
ElCmp()
    ~Dos.Print("找不到啦\x0a")
End
~Dos.System("pause")

說明:目錄資料夾\ '是放在目錄圖檔裡資料庫 \


---------------------------------------------------------------------------------------------------

產生造字圖檔
~Lib.FontBmp("來源文字訊息", 字型大小, 字型粗體, 字型間距, "字型家族", 字型顏色文字, 字型外框陰影, "存檔名")
字型大小     = 8 ~ 72
字型粗體     = 0 ~ 1
字型間距     = 0 ~ 10
字型家族     = 可選  "細明體"  "新細明體"  "標楷體"  "微軟正黑體"
字型外框陰影 = ~Lib.RGB(255, 128, 1) '同背景色
回傳值:無

示範:
' "字型家族" 有多種不同字型的變化,交給 ~Lib.FindImage 找圖附加糢糊偏色值機率很高都找得到
~Lib.FontBmp("給予任務", 12, 0, 0, "細明體", ~Lib.RGB(0, 0, 0), ~Lib.RGB(255, 128, 1), "存檔名")

---------------------------------------------------------------------------------------------------

區域屏幕捕獲擷圖
~Lib.Capture(視窗句柄, 左上角X (啟點), 左上角Y (啟點), 右下角X (終點), 右下角Y (終點), "存檔名", "詳細留言", 濾鏡)
濾鏡 = 0 ~ 5 ( 0 正常  /  1 濾鏡[反相]  /  2 濾鏡[馬賽克 2x2]  /  3 濾鏡[黑白]  /  4 濾鏡[細線]  /  5 濾鏡[10色] )
回傳值:無

屏幕捕獲抓圖出來視窗擷圖及座標資料,可以用小畫家來打開看圖色及座標。
~Lib.Capture 數據相連提供給圖色及座標( ~Lib.MouseMsg / ~Lib.GetPixel / ~Lib.ScanPixel / ~Lib.FindImage )

'視窗框擷圖
~Lib.Capture($hWnd, 0, 0, ~Lib.GetWiCr($hWnd, 6), ~Lib.GetWiCr($hWnd, 7), "存檔名","", 0)

---------------------------------------------------------------------------------------------------

色碼過濾
~Lib.Colorfilter("圖片檔", 顏色值, 偏色範圍, 正反過濾值)
偏色範圍 = 0 ~ 100

過濾值   = 0 反  /  1 正  /  2 反背  /  3 正背
回傳值:無

---------------------------------------------------------------------------------------------------


螢幕錄影  <注意:沒有加入錄音!>
~Lib.ScreenREC(視窗句柄, "錄影存檔名", 時間計時器)
時間計時器 = 1 ~ 60 秒
回傳值:無
(電腦配備等級強弱速度有差異,幀速率無法準確。)

---------------------------------------------------------------------------------------------------

最小化可調支援截圖
視窗句柄:建議用(父窗口)
~Lib.Minimized(視窗句柄)
回傳值:無

---------------------------------------------------------------------------------------------------

讀取某視窗句柄
~Lib.GetEnumWindow("標題")
回傳值:有 (零值 = 執行檔不存在  /  非零值 = 標題存在) [注意:一行容量空間有限]

示範:
$hWnd = ~String.Split(~Lib.GetEnumWindow("記事本"), "\x0a")
Cmp( $hWnd[0] == 0 )
    ~Dos.Print("\x0a錯誤,沒有開啟視窗!\x0a")
    ~Dos.System("pause")
    Exit
End
~Dos.Print($hWnd)
$Ex = ~String.Split($hWnd[1], "\x0c")
~Dos.Print($Ex[0] "\x0a")
~Dos.Print($Ex[1] "\x0a")
~Dos.System("pause")

---------------------------------------------------------------------------------------------------

搜索 BYTE 記憶體
說明:?? 9? ?9 問號是未知數值
說明:7E+5 等於 7E 7F 80 81 82 83  [支援範圍 +1 ~ +F]
~Lib.ScanMemory(進程句柄, 0x400000[開始掃描位址], 0xFFFFFFFF[掃描結束位址], "byte數組")
回傳值:有

示範:
'讀取視窗代碼
$hWnd = ~DLLMsg("User32.DLL", "int", "FindWindowA", 0, "遊戲名稱")
$a = ~time.Clock()
$ret = ~Lib.ScanMemory($hWnd, 0x400000, 0xFFFFFFFF, "03 00 ?? 00 F7+3 62 79 08") + 8
$b = ~time.Clock() - $a
~Dos.Print("搜尋花時間計算(毫秒):" $b "\x0a")
~Dos.Print("基址:0x" ~lib.Hex($ret) "\x0a")
~Dos.System("pause")

---------------------------------------------------------------------------------------------------

讀寫Byte位元記憶體
~Lib.ByteMemory(視窗句柄, 基址, 位元)            '讀取Byte 1~8個位元
~Lib.ByteMemory(視窗句柄, 基址, ByteCode, 位元)  '覆寫Byte 1~8個位元
回傳值:有/無

示範:
$hwnd = ~DLLMsg("User32.DLL", "int", "FindWindowA", 0, "遊戲名稱")
$BaseAddress = 0x75C50F40                           '基址
~lib.ByteMemory($hwnd, $BaseAddress, 0xaabbccdd, 4) '覆寫
$ret = ~lib.ByteMemory($hwnd, $BaseAddress, 4)      '讀取
~dos.print($ret"\x0a")
~dos.print(~lib.dec($ret)"\x0a")                    '讀取位元數值
~dos.system("pause")

---------------------------------------------------------------------------------------------------

DLL注入目標程序
~Lib.InjectDLL(視窗句柄, "載入DLL檔案")
回傳值:有 (0 = 失敗 / 1 = 成功)
注意:只限執行一次注入程序後,不能繼續重覆,否則會失效。
     若要重覆注入,目標EXE程序也要重開程序對有效。
示範:
'載入目錄捷徑DLL檔案
$dllPath = ""
~dllmsg("Kernel32.DLL", "int", "GetModuleFileNameA", 0, <str_ref>$dllPath, 256)
$dllPath = ~String.Mid($dllPath, 1, ~String.InstrRev($dllPath, "\")) "InjectDLL.dll"
~dos.print("捷徑:" $dllPath"\x0a")

$hWnd = ~DLLMsg("User32.DLL", "int", "FindWindowA", "Notepad3", 0)

Cmp(~Lib.InjectDLL($hWnd, $dllPath))
    ~dos.print("已注入\x0a")
ElCmp
    ~dos.print("錯誤 - 未注入\x0a")
End
~dos.system("pause")


---------------------------------------------------------------------------------------------------

客戶端送出文字 [連接埠口最大可用的socket port數目 0 ~ 65535]
~Lib.ClientMsg(IP位址, 連接埠口, 送出訊息)
回傳值:有 (0 = 未連接至服務端  /  1 = 連接至服務端)

服務端接收文字 [連接埠口最大可用的socket port數目 0 ~ 65535]
~Lib.ServerMsg(連接埠口)
回傳值:有

示範:
'客戶端
Cmp(1)
    ~Dos.Print("請輸入送出文字:")
    $str = ~Dos.Gets()
    $msg = ~Lib.ClientMsg("127.0.0.1", 1234, $str)
    Cmp(~String.StrCmp($str, "exit"))
        ~Dos.Print(~Lib.ServerMsg(5678))
        ~Dos.System("pause")
        Exit
    End
Loop

'服務端
Cmp(1)
    $msg = ~Lib.ServerMsg(1234)
    Cmp(~String.StrCmp($msg, "exit"))
        $msg = ~Lib.ClientMsg("127.0.0.1", 5678, "哦~ 你要離開了。拜拜!\x0a\x0a")
        Exit
    End
    ~Dos.Print($msg.ip " : " $msg.port " -> " $msg "\x0a\x0a")
Loop

---------------------------------------------------------------------------------------------------

客戶端檔案上傳 [連接埠口最大可用的socket port數目 0 ~ 65535]
~Lib.ClientFile(IP位址, 連接埠口, "檔名上傳")
回傳值:有 (0 = 未連接至服務端  /  1 = 連接至服務端)

服務端接收檔案 [連接埠口最大可用的socket port數目 0 ~ 65535]
~Lib.ServerFile(連接埠口, "儲存檔名")
回傳值:無

---------------------------------------------------------------------------------------------------

剪貼板:剪下
~Lib.SetClip("字串")
回傳值:無

剪貼板:貼上
~Lib.GetClip()
回傳值:有

---------------------------------------------------------------------------------------------------

讀取本程式版本
~Lib.Ver()
回傳值:有

############################################################################################( Dos )

印字
~Dos.Print("字串")
回傳值:無

示範:
~Println("你好嗎")
Def: Println($text)
    ~Dos.Print("["~Time.Hour(0)":"~Time.Minute(0)":"~Time.Second(0)"]" $text "\x0a")
End Def

---------------------------------------------------------------------------------------------------

Dos 指令
~Dos.System("字串")
回傳值:無

---------------------------------------------------------------------------------------------------

讀取字串
~Dos.Gets()
回傳值:有

---------------------------------------------------------------------------------------------------

讀取鍵碼
~Dos.Getch()
回傳值:有

---------------------------------------------------------------------------------------------------

清除螢幕
~Dos.Clrscr()
回傳值:無

---------------------------------------------------------------------------------------------------

清除行列文字
x : 直欄,其範圍是 0 ~ 79
y : 橫列,其範圍是 0 ~ 24
~Dos.ClrEol(座標 X, 座標 Y)
回傳值:無

---------------------------------------------------------------------------------------------------

變更游標的座標位置
x : 直欄,其範圍是 0 ~ 79
y : 橫列,其範圍是 0 ~ 24
~Dos.GotoXY(座標 X, 座標 Y)
回傳值:無

---------------------------------------------------------------------------------------------------

前景和背景屬性設定
0  黑   ->   背景正常狀況
1  藍
2  綠
3  藍綠
4  紅
5  紫
6  黃
7  白   ->   前景正常狀況
8  灰
9  淡藍
10 淡綠
11 淡藍綠
12 淡紅
13 淡紫
14 淡黃
15 亮白
~Dos.TextColor(前景, 背景)
回傳值:無

---------------------------------------------------------------------------------------------------

讀取console內部執行記錄
~Dos.CmdRecord("輸入執行")
回傳值:有 [注意:一行容量空間有限]

#########################################################################################( String )

字串比對
~String.StrCmp("字串1", "字串2")
回傳值:有

---------------------------------------------------------------------------------------------------

取得字元
~String.Mid("字串", 啟點位置, 個數)
回傳值:有

---------------------------------------------------------------------------------------------------

總長度字串
~String.Len("字串")
回傳值:有

---------------------------------------------------------------------------------------------------

搜尋找字元
~String.Instr("字串", "找字串")
回傳值:有

---------------------------------------------------------------------------------------------------

反向搜尋找字元
~String.InstrRev("字串", "找字串")
回傳值:有

---------------------------------------------------------------------------------------------------

插入字元
~String.Insert("字串" , 插入位置, "插入字串")
回傳值:有

---------------------------------------------------------------------------------------------------

刪除字元
~String.Remove("字串", 刪除位置, 個數)
回傳值:有

---------------------------------------------------------------------------------------------------

替換字串
~String.Replace("字串", "找字串", "換字串")
回傳值:有

---------------------------------------------------------------------------------------------------

左右除去空白
~String.Trim("字串")
回傳值:有

---------------------------------------------------------------------------------------------------

翻轉字符串
~String.Reverse("字串")
回傳值:有

---------------------------------------------------------------------------------------------------

大寫字母轉小寫
~String.Lower("字串")
回傳值:有

---------------------------------------------------------------------------------------------------

小寫字母轉大寫
~String.Upper("字串")
回傳值:有

---------------------------------------------------------------------------------------------------

搜尋找字元計數
~String.InCount("字串", "找字串")
回傳值:有

---------------------------------------------------------------------------------------------------

判斷是否數值
~String.IsNumber("字串")
回傳值:有

---------------------------------------------------------------------------------------------------

左從右替補字
~String.Lmend("字串", "替補字", 數值)
回傳值:有

---------------------------------------------------------------------------------------------------

右從左替補字
~String.Rmend("字串", "替補字", 數值)
回傳值:有

---------------------------------------------------------------------------------------------------

分隔符號時分割字串
~String.Split("字串", "分隔符號")
回傳值:有

'範例說明
$str = ~String.Split("123|456|789", "|")
~Dos.Print("\x0a.length陣列算出幾個元素:" $str.length "\x0a\x0a")
~Dos.Print($str    "\x0a" \
           $str[0] "\x0a" \
           $str[1] "\x0a" \
           $str[2] "\x0a")
~Dos.System("pause")

###########################################################################################( Time )

1 天 = 86400  秒    10  天 = 864000   秒    2500   天 = 216000000   秒
2 天 = 172800 秒    20  天 = 1728000  秒    5000   天 = 432000000   秒
3 天 = 259200 秒    30  天 = 2592000  秒    10000  天 = 864000000   秒
4 天 = 345600 秒    40  天 = 3456000  秒    25000  天 = 2160000000  秒
5 天 = 432000 秒    50  天 = 4320000  秒    50000  天 = 4320000000  秒
6 天 = 518400 秒    100 天 = 8640000  秒    100000 天 = 8640000000  秒
7 天 = 604800 秒    250 天 = 21600000 秒    250000 天 = 21600000000 秒
8 天 = 691200 秒    500 天 = 43200000 秒    500000 天 = 43200000000 秒
9 天 = 777600 秒
秒 = 0 正常現實時間

---------------------------------------------------------------------------------------------------

日期 : 年
~Time.Year(秒)
回傳值:有

---------------------------------------------------------------------------------------------------

日期 : 月
~Time.Month(秒)
回傳值:有

---------------------------------------------------------------------------------------------------

日期 : 日
~Time.Day(秒)
回傳值:有

---------------------------------------------------------------------------------------------------

日期 : 星期幾
~Time.Week(秒)
回傳值:有

---------------------------------------------------------------------------------------------------

時間 : 時
~Time.Hour(秒)
回傳值:有

---------------------------------------------------------------------------------------------------

時間 : 分
~Time.Minute(秒)
回傳值:有

---------------------------------------------------------------------------------------------------

時間 : 秒
~Time.Second(秒)
回傳值:有

---------------------------------------------------------------------------------------------------

時間計時器
~Time.Clock()
回傳值:有

---------------------------------------------------------------------------------------------------

亂數值
~Time.Rand(數值)
回傳值:有

###########################################################################################( Math )

取整數的絕對值
~Math.Abs(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

計算四捨五入
~Math.Round(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

計算指數
~Math.Exp(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

傳回浮點數的整數部份
~Math.Floor(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

取得一個浮點數的極大值
~Math.Ceil(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

計算平方根值
~Math.Sqrt(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

計算對數值
~Math.Log(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

計算正弦值
~Math.Sin(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

計算餘弦值
~Math.Cos(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

計算正切數值
~Math.Tan(數值)
回傳值:有

---------------------------------------------------------------------------------------------------

計算次方
~Math.Pow(數值, 次方數值)
回傳值:有

###########################################################################################( File )

檔案 : 檢查是否存在檔案
~File.Exists("檔名")
回傳值:有 (0 = 檔案不存在  /  1 = 檔案存在)

---------------------------------------------------------------------------------------------------

檔案 : 結尾資料
~File.Eof()
回傳值:有 (0 = 未到結尾  /  1 = 已到結尾)

---------------------------------------------------------------------------------------------------

檔案 : 建立讀寫
~File.Open("檔名", "模式")
寫入模式 "w"
讀取模式 "r"
覆寫模式 "a"
回傳值:無

---------------------------------------------------------------------------------------------------

檔案 : 讀取資料
~File.Read()
回傳值:有

---------------------------------------------------------------------------------------------------

檔案 : 覆寫資料
~File.Write("字串")
回傳值:無

---------------------------------------------------------------------------------------------------

檔案 : 加入覆寫資料
~File.AddWrite("字串")
回傳值:無

---------------------------------------------------------------------------------------------------

檔案 : 結束
~File.Close("模式")
寫入模式 "w"
讀取模式 "r"
覆寫模式 "a"
回傳值:無

---------------------------------------------------------------------------------------------------

檔案 : 目錄查找檔案
~File.FirstFile("目錄查找檔案", "存檔名")
回傳值:有

'範例說明一
$FileCount = ~File.FirstFile("C:\WINDOWS\*.exe", "資料.txt")
~Dos.Print("總共檔案數:" $FileCount "\x0a")
~Dos.System("pause")

'範例說明二
$fileimage = ""
$FileCount = ~File.FirstFile("image\*.bmp", "image.txt")
~File.Open("image.txt", "r")    '讀取資料
Cmp (~File.Eof() == 0)          '判斷是否結尾資料
    $Read = ~File.Read()
    Cmp(~String.Len($Read) <> 0)
        $fileimage = $fileimage "|image\" ~String.Replace($Read, ".bmp", "")
        Cmp(~String.StrCmp(~String.Mid($fileimage, 1, 1), "|"))
            $fileimage = ~String.Remove($fileimage, 0, 1)
        End
    End
Loop
~Dos.Print($fileimage"\x0a")
~File.Close("r")
~Dos.System("pause")

---------------------------------------------------------------------------------------------------

檔案 : 讀取容量大小
~File.GetFileSize("檔名")
回傳值:有

---------------------------------------------------------------------------------------------------
__________________________________________________( File 說明 )

~File.Open("檔名.txt", "w")    '建立檔案
~File.Write("字串")
~File.Close("w")

~File.Open("檔名.txt", "r")    '讀取資料
~Dos.Print(~File.Read() "\x0a")
~File.Close("r")

~File.Open("檔名.txt", "a")    '加入舊資料後存檔
~File.AddWrite("字串")
~File.Close("a")


'--------------------------------------------------------------------------------------------------
'使用 DLLMsg 呼叫 Windows API 函式庫
'--------------------------------------------------------------------------------------------------
'__________( 啟動窗口焦點 )__________
Def: Active( $hWnd )
  '$hWnd  視窗句柄
  Return ~DLLMsg("User32.DLL", "int", "SetForegroundWindow", $hWnd)
End Def

'__________( 查找父視窗句柄 )__________
Def: FindWindow( $name )
  '$name  標題
  Return ~DLLMsg("User32.DLL", "int", "FindWindowA", 0, $name)
End Def

'__________( 查找子視窗句柄 )__________
Def: FindWindowEx( $hWndEx, $Class )
  '$hWndEx  子視窗句柄
  '$Class   類名
  Return ~DLLMsg("User32.DLL", "int", "FindWindowExA", $hWndEx, 0, $Class, 0)
End Def

'__________( 讀取子窗口標題句柄 )__________
Def: GetWindowText( $hWndEx )
  '$hWndEx  子窗口標題句柄
  $WindowName = ""
  ~DLLMsg("User32.DLL", "int", "GetWindowTextA", $hWndEx, <str_ref>$WindowName, 255)
  Return $WindowName
End Def

'__________( 讀取子窗口類別句柄 )__________
Def: GetClassName( $hWndEx )
  '$hWndEx  子窗口類別句柄
  $ClassName = ""
  ~DLLMsg("User32.DLL", "int", "GetClassNameA", $hWndEx, <str_ref>$ClassName, 255)
  Return $ClassName
End Def

'__________( 讀取螢幕解析度 )__________
Def: GetScreen( $nIndex )
  '$nIndex = 0     寬度 Width
  '$nIndex = 1     高度 Height
  Return ~DLLMsg("User32.DLL", "int", "GetSystemMetrics", $nIndex)
End Def

'__________( 移動視窗 )__________
Def: MoveWindow( $hWnd, $x, $y )
  '$hWnd  視窗句柄
  '$x     座標 X
  '$y     座標 Y
  ~DLLMsg("User32.DLL", "int", "SetWindowPos", $hWnd, 0, $x, $y, 0, 0, 1)
End Def
   
'__________( 設定視窗大小 )__________
Def: SizeWindow( $hWnd, $x, $y )
  '$hWnd  視窗句柄
  '$x     視窗尺寸 X
  '$y     視窗尺寸 Y
  ~DLLMsg("User32.DLL", "int", "SetWindowPos", $hWnd, 0, 0, 0, $x, $y, 2)
End Def

'__________( 獲得駐點視窗句柄 )__________
Def: HandleWindow()
  Return ~DLLMsg("User32.DLL", "int", "GetForegroundWindow")
End Def

'__________( 改變指定窗口的標題 )__________
Def: SetWindowText( $hWnd, $name )
  '$hWnd  視窗句柄
  '$name  設定窗口標題
  ~DLLMsg("User32.DLL", "int", "SetWindowTextA", $hWnd, $name)
End Def

'__________( 抓下載網頁或檔案 )__________
Def: DownloadFile( $http, $file )
  '$http  網址檔名
  '$file  下載存檔名
  ~DLLMsg("Urlmon.DLL", "int", "URLDownloadToFileA", 0, $http, $file, 0, 0)
End Def

'__________( 喇叭播放單音逐漸上高音頻 )__________
Def: Beep()
  $beep = 100
  Cmp( $beep < 1200 )
    ~DLLMsg("Kernel32.DLL", "int", "Beep", $beep, 300)
    $beep = $beep + 100
  Loop
End Def

'__________( 對話方塊 )__________
Def: MsgBox( $String, $Flags )
  '$String 文字資料
  '以下是 Flags 的設定值
  '0 (MB_OK) : OK按鈕
  '1 (MB_OKCANCEL) : OK, Cancel按鈕
  '2 (MB_ABORTRETRYIGNORE) : Abort, Retry, Ignore按鈕
  '3 (MB_YESNOCANCEL) : Yes, No, Cancel按鈕
  '4 (MB_YESNO) : Yes, No按鈕
  '5 (MB_RETRYCANCEL) : Retry, Cancel按鈕
  '16 : 錯誤圖示
  '32 : 問號圖示
  '48 : 危險圖示
  '64 : 訊息圖示
  Return ~DLLMsg("User32.DLL", "int", "MessageBoxA", 0, $String, "Scripting Hero", $Flags)
End Def

'__________( 呼叫執行檔 )__________
Def: Shell($path)
  '$path 執行檔捷徑
  ~DLLMsg("shell32.dll", "int" , "ShellExecuteA", 0, "open", $path, 0, 0, 5)
End Def

'--------------------------------------------------------------------------------------------------

'多執行緒,視窗改名稱,關閉程序
'--------------------------------------------------------------------------------------------------
'##下面提供給你參考##

'''可以多開多執行緒
'''~Dos.System("Start Hero.exe 1.txt")


'自身可以改視窗名稱
~DLLMsg("Kernel32.DLL", "int", "SetConsoleTitleA", "我的腳本")
'暫停一下,你按enter看看
~Dos.System("pause")


'''讀取自身的句柄
'''$hWnd = ~DllMsg("Kernel32.DLL", "int", "GetConsoleWindow")
'''或下面都可以選遠程找句柄
$hWnd = ~DLLMsg("User32.DLL", "int", "FindWindowA", 0, "我的腳本")


$WM_CLOSE = 0x10
$WM_SYSCOMMAND = 0x0112
$SC_CLOSE = 0xF060

'關閉程序,任選一指令也可以
'~DLLMsg("User32.DLL", "int", "SendMessageA" , $hWnd, $WM_CLOSE, 0, 0)
~DLLMsg("User32.DLL", "int", "SendMessageA" , $hWnd, $WM_SYSCOMMAND, $SC_CLOSE, 0)


'以下你不會看到這個暫停指令
~Dos.Print("你看到我什麼樣子......\x0a")
~Dos.System("pause")

'--------------------------------------------------------------------------------------------------
'鍵碼資料庫
'--------------------------------------------------------------------------------------------------
$Mouse.Left   = 1
$Mouse.Right  = 2

$Key.0        = 48
$Key.1        = 49
$Key.2        = 50
$Key.3        = 51
$Key.4        = 52
$Key.5        = 53
$Key.6        = 54
$Key.7        = 55
$Key.8        = 56
$Key.9        = 57

$Key.A        = 65
$Key.B        = 66
$Key.C        = 67
$Key.D        = 68
$Key.E        = 69
$Key.F        = 70
$Key.G        = 71
$Key.H        = 72
$Key.I        = 73
$Key.J        = 74
$Key.K        = 75
$Key.L        = 76
$Key.M        = 77
$Key.N        = 78
$Key.O        = 79
$Key.P        = 80
$Key.Q        = 81
$Key.R        = 82
$Key.S        = 83
$Key.T        = 84
$Key.U        = 85
$Key.V        = 86
$Key.W        = 87
$Key.X        = 88
$Key.Y        = 89
$Key.Z        = 90

$Key.F1       = 112
$Key.F2       = 113
$Key.F3       = 114
$Key.F4       = 115
$Key.F5       = 116
$Key.F6       = 117
$Key.F7       = 118
$Key.F8       = 119
$Key.F9       = 120
$Key.F10      = 121
$Key.F11      = 122
$Key.F12      = 123

$Key.Back     = 8
$Key.Tab      = 9
$Key.Enter    = 13
$Key.Shift    = 16
$Key.Ctrl     = 17
$Key.Alt      = 18
$Key.CapsLock = 20
$Key.Esc      = 27
$Key.Space    = 32
$Key.LWin     = 91
$Key.RWin     = 92

$Key.Insert   = 45
$Key.Delete   = 46
$Key.Home     = 36
$Key.End      = 35
$Key.PageUp   = 33
$Key.PageDown = 34

$Key.Up       = 38
$Key.Down     = 40
$Key.Left     = 37
$Key.Right    = 39

$Key.Print    = 44
$Key.Pause    = 19
$Key.NumLock  = 144