腳本英雄
Scripting Hero ( 版本:
2.5.0
FREE )
__________________________________________________(
關於 )
(1) [ 腳本英雄 ] 為本人(余明倫
ymlk)自主研發創造出來的程式,本人保有著作權以及最後解釋權。
(2) [ 腳本英雄 ]
主程式Hero.exe,禁止修改及轉賣,發現不當行為請立刻通知本作者。
(3)本人同意可以任何形式轉發 [ 腳本英雄
],須註明來源出處及原作者。
(4)編寫完成之腳本文件(.TXT檔),不得用於商業用途,希望能夠分享給大家。
注意事項如下:
(1)主程式會綁電腦序號,即可重灌
Windows 不受影響。(格式化及模組化受到周圍變更的影響)
(2)若要換電腦系統,原有雲端帳號匹配後不符合,必須重新購買,恕不補發或退款,提醍注意。
(3)線上遊戲加裝防外掛系統,主程式不一定可行用,如果無法可行用就算了,恕不補發或退款。
(4)主程式掛線上遊戲有機率百分之不準確計算,官方取締抓到不法行為遭帳號被封鎖,否則後果自行負責,恕不補發或退款。
InternetWeb ->
http://ymlk.myds.me
DisCord ->
http://discord.gg/mueUUBY
FaceBook -> http://www.facebook.com/ScriptingHero
__________________________________________________( 付費 )
付費 VIP
~Lib.Inject
注入奪取特權碼
~Lib.DupPriv
複製特權碼
需要試用功能,請到網頁輸入驗證碼後開通即可。
http://ymlk.myds.me/check/
__________________________________________________(
程式參考重點 )
Encoding是編碼格式的文字預設為ANSI,不是Unicode、
UCS-2、UTF-8碼格式。
字符 Byte:1280
是一行長度總共個字符,超過記憶庫以上發生錯誤。
__________________________________________________( 程式額外工具指令 )
請輸入腳本檔名:.site
(雲端腳本)
請輸入腳本檔名:.window
(查詢所有視窗句柄)
請輸入腳本檔名:.obtype
(查詢執行句柄權限)
請輸入腳本檔名:.screen
(螢幕防止睡眠狀態)
__________________________________________________(
程式暫停執行 )
組合鍵[暫停]: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")
__________________________________________________(
~Cmp 簡便條件判斷式 )
$ret = ~Cmp(1 > 10, ~AAA(1,
2), ~BBB(4, 5))
~Dos.Print("計算結果 : " $ret "\x0a")
~Dos.System("pause")
Def: AAA( $a, $b )
~Dos.Print("$a + $b : " $a " + " $b
"\x0a")
return $a + $b
End Def
Def: BBB( $a, $b
)
~Dos.Print("$a * $b : " $a " * " $b "\x0a")
return $a * $b
End Def
__________________________________________________(
GoTo 跳轉標籤 )
:Main
...
GoTo Main
GoTo Main
...
:Main
__________________________________________________(
Exit 離開主程式 )
Exit
__________________________________________________(
特殊字符 )
\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 = ~Lib.FindWindow(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 )
後台滑鼠訊息
~Lib.MouseMsg(視窗句柄, 訊息, 座標 X, 座標
Y, 焦點激活)
訊息 = 0 游標移動
訊息 = 2 左按下
訊息 = 4 左放開
訊息 = 8 右按下
訊息 = 16 右放開
訊息 = 32 中按下
訊息 = 64 中放開
訊息 = 120 前滾輪
訊息 = -120 後滾輪
訊息 = 100 X1按下
訊息 = 101 X1放開
訊息 = 200 X2按下
訊息 = 201 X2放開
焦點激活 = 0 無
焦點激活 =
1 1號模式
焦點激活 = 2 2號模式
焦點激活 = 3
3號模式
返回值:無
~LMouseClick(視窗句柄, 座標 X, 座標 Y) '滑鼠左鍵單點擊
Def: LMouseClick($hWnd, $x, $y)
~Lib.MouseMsg($hWnd, 2, $x, $y, 0)
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 4, $x, $y, 0)
End Def
~RMouseClick(視窗句柄, 座標 X, 座標 Y) '滑鼠右鍵單點擊
Def: RMouseClick($hWnd, $x, $y)
~Lib.MouseMsg($hWnd, 8, $x, $y, 0)
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 16, $x, $y, 0)
End Def
---------------------------------------------------------------------------------------------------
後台鍵盤訊息
~Lib.KeybdMsg(視窗句柄, 訊息, 鍵碼, 焦點激活)
訊息 =
0 按下
訊息 =
2 放開
焦點激活 = 0 無
焦點激活 = 1 1號模式
焦點激活 = 2
2號模式
焦點激活 = 3
3號模式
返回值:無
~KeybdClick(視窗句柄, 鍵碼) '鍵盤單點擊
Def: KeybdClick($hWnd, $Vk)
~Lib.KeybdMsg($hWnd, 0, $Vk, 0)
~Lib.Sleep(200)
~Lib.KeybdMsg($hWnd, 2, $Vk, 0)
End Def
---------------------------------------------------------------------------------------------------
發送對話字符訊息
~Lib.SendString(視窗句柄, "字符模式", "字串訊息")
字符模式 = "A"
(單字元模式 ANSI)
字符模式 = "W" (雙字元模式 Unicode / UTF-8)
返回值:無
---------------------------------------------------------------------------------------------------
判斷是否按到鍵碼
~Lib.GetKey(鍵碼)
返回值:有
示範:
~Dos.Print("按F2啟動,F3離開\x0a")
Cmp
Cmp(~Lib.GetKey(113)) '113
= F2
~Dos.Print("你按到F2\x0a")
Cmp(~Lib.GetKey(114)) '114
= F3
~Dos.Print("你按到F3離開了\x0a")
Break
ElCmp
~Dos.Print("@")
~Lib.Sleep(100)
Loop
End
~Lib.Sleep(100)
Loop
---------------------------------------------------------------------------------------------------
停留延遲
0.5秒 = 500 毫秒
1秒 = 1000 毫秒
~Lib.Sleep(毫秒/ms)
返回值:無
---------------------------------------------------------------------------------------------------
查找父視窗句柄
~Lib.FindWindow("類別", "標題")
返回值:有
---------------------------------------------------------------------------------------------------
16進位轉換10進位
~Lib.Dec(16進位)
返回值:有
---------------------------------------------------------------------------------------------------
10進位轉換16進位
~Lib.Hex(10進位)
返回值:有
---------------------------------------------------------------------------------------------------
ComBoBox清單中選取
~Lib.InputComBoBox("提示字串訊息", "字串設定置", "預設字串設定置")
返回值:有
示範:
$ret = "紅水瓶"
$src =
~Lib.InputComboBox("你好\x0a道具清單中選取", "血量|血魔|紅水瓶|藍水魔", $ret)
~Dos.Print($src
"\x0a")
~Dos.System("timeout /t 3")
---------------------------------------------------------------------------------------------------
彈出式輸入方塊
~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.GetXY(座標)
示範:
$x = ~Lib.GetXY(x)
$y = ~Lib.GetXY(y)
返回值:有
示範:
'後台取得目前滑鼠座標
$hWnd = ~Lib.FindWindow(0, "標題")
Cmp
$x = ~Lib.GetXY(x) - ~Lib.GetWiCr(0)
$y = ~Lib.GetXY(y) - ~Lib.GetWiCr(1)
~Dos.Print("座標:" $x
"," $y "\x0a")
~Lib.Sleep(200)
Loop
---------------------------------------------------------------------------------------------------
讀取顏色值
~Lib.GetPixel(視窗句柄, 畫面模式, 座標X, 座標Y)
畫面模式 = "GDI" -> Window(反應快) / "DX" -> DirectX(反應慢)
示範:
$hWnd = ~Lib.FindWindow(0, "遊戲視窗名")
$ret = ~Lib.GetPixel($hWnd, "GDI", 123, 456)
~Dos.Print("Color:" $ret
"\x0a")
~Dos.System("pause")
返回值:有
使用前先測試 ~Lib.Capture 數據資料狀況
---------------------------------------------------------------------------------------------------
搜尋色碼比對
(1)固定位置顏色比對
~Lib.ScanPixel(視窗句柄, 畫面模式, 左上角X, 左上角Y, 顏色值, 偏位座標及顏色x|y|color,
模糊偏色值, 濾鏡, 縱橫)
(2)全搜尋顏色比對
~Lib.ScanPixel(視窗句柄, 畫面模式, 左上角X(啟點),
左上角Y(啟點), 右下角X(終點), 右下角Y(終點),
顏色值, 偏位座標及顏色x|y|color,
模糊偏色值, 濾鏡, 縱橫)
畫面模式 = "GDI" -> Window(反應快) / "DX" -> DirectX(反應慢)
偏位座標及頻色 x | y | color = 正負x|正負y|顏色值 / 0 無
模糊偏色值 = 0.5 ~ 1
(顏色是否變化 1
正常 0.5 ~ 0.9 模糊偏色)
濾鏡 = 0 ~
3 ( 0
= 正常 / 1 = 濾鏡[銳化] / 2 = 濾鏡[連環畫]
/ 3 = 濾鏡[色溫] )
縱橫
= 0 往上到下 / 1 往左到右
返回值:有 (零值 = 色碼不符合 /
非零值 = 色碼符合)
使用前先測試 ~Lib.Capture 數據資料狀況
示範(1):
$hWnd = ~Lib.FindWindow(0, "遊戲視窗名")
$Color = ~Lib.ScanPixel($hWnd, "GDI",
100, 200, ~Lib.RGB(128,128,128), 0, 0.9, 0, 0)
~Dos.Print($Color "\x0a")
~Dos.System("pause")
示範(2):
$hWnd = ~Lib.FindWindow(0, "遊戲視窗名")
$Color = ~Lib.ScanPixel($hWnd, "GDI", 0,
0, ~Lib.GetWiCr($hWnd, 6), ~Lib.GetWiCr($hWnd, 7), ~Lib.RGB(128,128,128),
-4|2|~Lib.RGB(21,63,39), 0.9, 0, 0)
~Dos.Print($Color "\x0a")
$Color = ~String.Split($Color,
" ")
Cmp($Color[0])
~Dos.Print("X="$Color[1] " Y=" $Color[2] "\x0a")
ElCmp()
~Dos.Print("找不到啦\x0a")
End
~Dos.System("pause")
---------------------------------------------------------------------------------------------------
搜尋圖形比對次數最多16個數據,返回值最多10個數據
[意思搜尋找到相同圖色再來繼續搜尋到完為止,總和次數和座標]
注意( BMP )檔案存取限制24位元色彩和圖檔要求寬高為
1~100(width) *
1~100(height) 像素
(1)固定位置圖形比對
~Lib.FindImage(視窗句柄, 畫面模式, 左上角X,
左上角Y, BMP載入圖檔, 模糊偏色值, 濾鏡, 縱橫)
(2)全搜尋圖形比對
~Lib.FindImage(視窗句柄, 畫面模式, 左上角X(啟點),
左上角Y(啟點), 右下角X(終點), 右下角Y(終點), BMP載入圖檔, 模糊偏色值, 濾鏡, 縱橫)
畫面模式 = "GDI" ->
Window(反應快) / "DX" -> DirectX(反應慢)
模糊偏色值 =
0.5 ~
1 (顏色是否變化 1 正常 0.5 ~ 0.9 模糊偏色)
濾鏡 = 0 ~
3 ( 0
= 正常 / 1 = 濾鏡[銳化] / 2 = 濾鏡[連環畫]
/ 3 = 濾鏡[色溫] )
縱橫 = 0 往上到下 / 1 往左到右
返回值:有 (零值 = 圖色不符合 /
非零值 = 圖色符合)
使用前先測試 ~Lib.Capture 數據資料狀況
想要略過色碼先手動用小畫家編輯 BMP 原圖補色 RGB(255,
128, 1) => 略過色碼
示範(1):
$hWnd = ~Lib.FindWindow(0, "遊戲視窗名")
$Color = ~Lib.FindImage($hWnd, "GDI",
100, 200, "圖檔1|圖檔2", 0.9, 0, 0)
~Dos.Print($Color "\x0a")
~Dos.System("pause")
示範(2):
$hWnd = ~Lib.FindWindow(0, "遊戲視窗名")
$Color = ~Lib.FindImage($hWnd, "GDI", 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.Capture(視窗句柄, 畫面模式, 左上角X(啟點),
左上角Y(啟點), 右下角X(終點), 右下角Y(終點), "存檔名", "詳細留言", 濾鏡)
畫面模式 = "GDI" -> Window(反應快) / "DX" ->
DirectX(反應慢)
濾鏡 =
0 ~ 3 ( 0
= 正常 / 1 = 濾鏡[銳化] / 2 = 濾鏡[連環畫] / 3 = 濾鏡[色溫] )
返回值:無
屏幕捕獲抓圖出來視窗擷圖及座標資料,可以用小畫家來打開看圖色及座標。
~Lib.Capture 數據相連提供給圖色及座標(
~Lib.MouseMsg / ~Lib.GetPixel / ~Lib.ScanPixel / ~Lib.FindImage )
'視窗框擷圖
~Lib.Capture($hWnd, "GDI", 0, 0,
~Lib.GetWiCr($hWnd, 6), ~Lib.GetWiCr($hWnd, 7), "存檔名","", 0)
---------------------------------------------------------------------------------------------------
產生造字圖檔
~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.Colorfilter("圖片檔", 顏色值, 偏色範圍, 正反過濾值)
偏色範圍 = 0
~ 100
過濾值 = 0 反 / 1 正 /
2 反背 / 3 正背
返回值:無
---------------------------------------------------------------------------------------------------
螢幕錄影 <注意:沒有加入錄音!>
~Lib.ScreenREC(視窗句柄,
"錄影存檔名", 時間計時器)
時間計時器 = 1 ~ 60 秒
返回值:無
(電腦配備等級強弱速度有差異,幀速率無法準確。)
---------------------------------------------------------------------------------------------------
最小化可調支援截圖
視窗句柄:建議用(父窗口)
~Lib.Minimized(視窗句柄)
返回值:無
---------------------------------------------------------------------------------------------------
讀取某視窗句柄
~Lib.GetEnumWindow("標題")
返回值:有 (零值 = 執行檔不存在 /
非零值 = 標題存在) [注意:一行容量空間有限]
示範(1):
$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")
---------------------------------------------------------------------------------------------------
讀取執行模組句柄
~Lib.ExeBaseAddr("LineageR.exe")
返回值:有 (零值 = 執行模組不存在 /
非零值 = 執行模組存在)
示範:
$BaseAddr = ~Lib.ExeBaseAddr("LineageR.exe")+0x708DB38
$BaseAddr =
~Lib.ByteMemory($hWnd, $BaseAddr, 8)
$BaseAddr = ~Lib.ByteMemory($hWnd,
~Lib.Dec($BaseAddr)+0x740, 8)
$BaseAddr = ~Lib.ByteMemory($hWnd,
~Lib.Dec($BaseAddr)+0x20, 8)
$BaseAddr = ~Lib.ByteMemory($hWnd,
~Lib.Dec($BaseAddr)+0xB18, 8)
$BaseAddr = ~Lib.ByteMemory($hWnd,
~Lib.Dec($BaseAddr)+0x158, 8)
$BaseAddress = ~Lib.Dec($BaseAddr)+0x68
$ret
= ~Lib.Dec(~Lib.ByteMemory($hWnd, $BaseAddress, 4)) '血量基址
~Dos.Print("血量:"
$ret "\x0a")
~Dos.System("pause")
---------------------------------------------------------------------------------------------------
客戶端送出文字 [連接埠口最大可用的socket port數目 0
~ 65535]
~Lib.ClientMsg(IP位址, 連接埠口, "字符模式", 送出訊息)
字符模式 = "A" (單字元模式 ANSI)
字符模式 = "W" (雙字元模式 Unicode / UTF-8)
返回值:有 (0 = 未連接至服務端 /
1 = 連接至服務端)
服務端接收文字 [連接埠口最大可用的socket port數目 0
~ 65535]
~Lib.ServerMsg(連接埠口)
返回值:有
示範:
'客戶端
Cmp(1)
~Dos.Print("請輸入送出文字:")
$str =
~Dos.Gets()
$msg =
~Lib.ClientMsg("127.0.0.1", 1234, "A", $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,
"A", "哦~
你要離開了。拜拜!\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()
返回值:有
---------------------------------------------------------------------------------------------------
綁定後台座標窗口(限制64位元應用程式)
~Lib.BackPoint(視窗句柄, 座標 X, 座標
Y)
返回值:無
有分三者綁定後台座標及鍵狀態
======================================================================
(1)
~Lib.BackPoint($hWnd, $x, $y) '綁定後台座標窗口,滑鼠手動操作由鼠標無法移過去。
~Lib.BackPoint($hWnd, 0, 0) '恢復原來座標狀態
判斷座標需要來源[Alt + Print Screen 組合鍵]截圖放在小畫家讀取像素座標
(2)
~Lib.BackPoint($hWnd, -1, -1) '獲取鍵狀態
~Lib.BackPoint($hWnd, -1, 0)
'恢復原來獲取鍵狀態
(3)
~Lib.BackPoint($hWnd, -2, -2) '異步鍵狀態
~Lib.BackPoint($hWnd, -2, 0)
'恢復原來異步鍵狀態
示範: (記得要加~Lib.Sleep延遲處理)
$x = 1227
$y = 32
~Lib.BackPoint($hWnd, $x+1, $y+31) '綁定座標
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 0, $x, $y, 3)
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 2, $x, $y, 3)
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 4,
$x, $y, 3)
~Lib.Sleep(200)
~Lib.BackPoint($hWnd, 0, 0) '恢復原來座標狀態
---------------------------------------------------------------------------------------------------
搜索 BYTE 記憶體
說明:?? 9? ?9 問號是未知數值
說明:7E+5 等於 7E 7F 80 81 82
83 [支援範圍 +1 ~ +F]
~Lib.ScanMemory(進程句柄, "byte數組")
返回值:有
示範:
'讀取視窗代碼
$hWnd = ~Lib.FindWindow(0, "遊戲視窗名")
$sec = ~time.Clock()
$ret =
~Lib.ScanMemory($hWnd, "03 00
?? 00 F7+3 62 79 08") + 8
$sec = ~time.Clock() - $sec
~Dos.Print("搜尋花時間計算(毫秒):" $sec "\x0a")
~Dos.Print("基址:0x" ~lib.Hex($ret) "\x0a")
~Dos.System("pause")
---------------------------------------------------------------------------------------------------
讀寫Byte位元記憶體
~Lib.ByteMemory(視窗句柄, 基址, 位元) '讀取Byte 1~8個位元
~Lib.ByteMemory(視窗句柄, 基址, ByteCode, 位元) '覆寫Byte 1~8個位元
返回值:有/無
示範:
$hWnd = ~Lib.FindWindow(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")
---------------------------------------------------------------------------------------------------
注入奪取特權碼 & 複製特權碼(限制64位元應用程式)
~Lib.Inject("執行檔名", 延遲)
~Lib.DupPriv("視窗句柄")
返回值:有 (0 = 失敗 / 1 = 成功)
注意:只限執行一次注入程序後,不能繼續重覆,否則會失效。
若要重覆注入,目標EXE程序也要重開程序對有效。
示範:
(1)注入
~Dos.TextColor(14, 0)
~Dos.Print("遊戲啟動前,腳本英雄要開前面。\x0a")
Cmp (~Lib.Inject("LineageR.exe",
0))
~Dos.TextColor(10, 0)
~Dos.Print("注入成功!\x0a")
ElCmp
~Dos.TextColor(12, 0)
~Dos.Print("注入失敗!\x0a")
End
~Dos.TextColor(7, 0)
~Dos.System("timeout /t 5")
(2)呼叫
$hWnd = ~Lib.FindWindow(0,
"LineageW ")
~Dos.Print("複製特權碼:"
~Lib.DupPriv($hWnd) "\x0a")
cmp
~mousexy($hWnd, 1197, 30)
~lib.sleep(1500)
~mousexy($hWnd, 1270, 30)
~lib.sleep(1500)
loop
def: mousexy($hWnd, $x, $y)
~Lib.BackPoint($hWnd, $x+1, $y+31) '綁定座標
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 0, $x, $y, 3)
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 2, $x, $y, 3)
~Lib.Sleep(200)
~Lib.MouseMsg($hWnd, 4, $x, $y, 3)
~Lib.Sleep(200)
~Lib.BackPoint($hWnd, 0, 0) '恢復原來座標狀態
end def
---------------------------------------------------------------------------------------------------
############################################################################################(
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.System("pause")
'暫停執行
---------------------------------------------------------------------------------------------------
讀取字串
~Dos.Gets()
返回值:有
---------------------------------------------------------------------------------------------------
讀取鍵碼
~Dos.Getch()
返回值:有
---------------------------------------------------------------------------------------------------
取得視窗範圍最大容量
~Dos.GetSize(座標)
示範:
$x = ~Dos.GetSize(x)
$y = ~Dos.GetSize(y)
返回值:有
---------------------------------------------------------------------------------------------------
游標讀取座標
~Dos.GetPos(座標)
示範:
$x = ~Dos.GetPos(x)
$y = ~Dos.GetPos(y)
返回值:有
---------------------------------------------------------------------------------------------------
顯示游標 / 隱藏游標
~Dos.Cursor(數值)
示範:
~Dos.Cursor(0) '顯示
~Dos.Cursor(1) '隱藏
返回值:無
---------------------------------------------------------------------------------------------------
變更游標的座標位置
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(前景, 背景)
返回值:無
---------------------------------------------------------------------------------------------------
清除螢幕
~Dos.Clrscr(左, 上, 右, 下)
示範:
~Dos.Clrscr(0, 0, 79, 24)
返回值:無
---------------------------------------------------------------------------------------------------
改變矩形的顏色
~Dos.ChangeRect(左, 上, 右, 下)
示範:
~Dos.ChangeRect(0, 0, 79, 24)
返回值:無
---------------------------------------------------------------------------------------------------
更改字符單元格
~Dos.ChangeChar(左, 上, 右, 下, 字符單元格)
示範:
~Dos.ChangeChar(0, 0, 79, 24, "@")
返回值:無
---------------------------------------------------------------------------------------------------
剪切區域移動本文
x : 直欄,其範圍是 0 ~ 79
y : 橫列,其範圍是 0 ~ 24
~Dos.AreaMove(左, 上, 右, 下, 移動座標 X, 移動座標 Y)
返回值:無
---------------------------------------------------------------------------------------------------
區域複製移到貼上
x : 直欄,其範圍是 0 ~ 79
y : 橫列,其範圍是 0 ~ 24
~Dos.AreaPaste(左, 上, 右, 下, 移到座標 X, 移到座標 Y)
返回值:無
---------------------------------------------------------------------------------------------------
讀取console內部執行記錄
~Dos.CmdRecord("輸入執行")
返回值:有 [注意:23行內顯示資料]
示範:
$cmdStr =
~Dos.CmdRecord("ping www.hinet.net")
~Dos.Print($cmdStr "\x0a\x0a總共行數:" $cmdStr.length
"\x0a")
~Dos.TextColor(11, 0)
~Dos.Print($cmdStr[0] "\x0a")
~Dos.Print($cmdStr[5] "\x0a")
~Dos.TextColor(7, 0)
~Dos.System("pause")
#########################################################################################(
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(數值, 次方數值)
返回值:有
---------------------------------------------------------------------------------------------------
判斷最大值
~Math.Max(數值1, 數值2)
返回值:有
---------------------------------------------------------------------------------------------------
判斷最小值
~Math.Min(數值1, 數值2)
返回值:有
###########################################################################################(
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.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
'------------------------------------------------------------------------------
'全螢幕前台控制
'------------------------------------------------------------------------------(箭頭移動)
Def: Mouse_Move($dx, $dy)
$MOUSEEVENTF_MOVE = 0x0001
$MOUSEEVENTF_ABSOLUTE = 0x8000
$GetScreenX =
~DLLMsg("User32.DLL", "int", "GetSystemMetrics", 0)
$GetScreenY = ~DLLMsg("User32.DLL", "int", "GetSystemMetrics", 1)
~DLLMsg("User32.DLL", "int", "mouse_event", $MOUSEEVENTF_ABSOLUTE +
$MOUSEEVENTF_MOVE, $dx * 65536 / $GetScreenX + 1, $dy * 65536 / $GetScreenY + 1,
0, 0)
End Def
'------------------------------------------------------------------------------(滑鼠左按下)
Def: Mouse_LeftDown()
$MOUSEEVENTF_LEFTDOWN = 0x0002
~DLLMsg("User32.DLL", "int", "mouse_event", $MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
End Def
'------------------------------------------------------------------------------(滑鼠左放開)
Def: Mouse_LeftUp()
$MOUSEEVENTF_LEFTUP = 0x0004
~DLLMsg("User32.DLL", "int", "mouse_event", $MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
End Def
'------------------------------------------------------------------------------(滑鼠右按下)
Def: Mouse_RightDown()
$MOUSEEVENTF_RIGHTDOWN = 0x0008
~DLLMsg("User32.DLL", "int", "mouse_event", $MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
End Def
'------------------------------------------------------------------------------(滑鼠右放開)
Def: Mouse_RightUp()
$MOUSEEVENTF_RIGHTUP = 0x0010
~DLLMsg("User32.DLL", "int", "mouse_event", $MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
End Def
'------------------------------------------------------------------------------(鍵盤按下)
Def: Keybd_Down($bVk)
$KEYEVENTF_KEYDOWN = 0x0000
$bScan = ~DLLMsg("User32.DLL", "int", "MapVirtualKeyA", $bVk, 0)
~DLLMsg("User32.DLL", "int",
"keybd_event", $bVk, $bScan, $KEYEVENTF_KEYDOWN, 0)
End Def
'------------------------------------------------------------------------------(鍵盤放開)
Def: Keybd_Up($bVk)
$KEYEVENTF_KEYUP = 0x0002
$bScan = ~DLLMsg("User32.DLL", "int", "MapVirtualKeyA", $bVk, 0)
~DLLMsg("User32.DLL", "int", "keybd_event", $bVk, $bScan, $KEYEVENTF_KEYUP, 0)
End
Def