監(jiān)視游戲窗口,實(shí)現(xiàn)掉線(xiàn)重連
高高興興寫(xiě)腳本,開(kāi)開(kāi)心心掛游戲~但是,網(wǎng)絡(luò)渣的時(shí)候游戲掉線(xiàn)怎么辦?(游戲掉線(xiàn)還有可能是游戲服務(wù)器超負(fù)荷,例如熱門(mén)游戲剛開(kāi)服的時(shí)候,那掉線(xiàn)掉得臉都綠了。)晚上掛機(jī),早上起來(lái)看成果,映入眼簾的居然是游戲掉
高高興興寫(xiě)腳本,開(kāi)開(kāi)心心掛游戲~但是,網(wǎng)絡(luò)渣的時(shí)候游戲掉線(xiàn)怎么辦?(游戲掉線(xiàn)還有可能是游戲服務(wù)器超負(fù)荷,例如熱門(mén)游戲剛開(kāi)服的時(shí)候,那掉線(xiàn)掉得臉都綠了。)晚上掛機(jī),早上起來(lái)看成果,映入眼簾的居然是游戲掉線(xiàn)提示~天啊~這不僅僅是損失一點(diǎn)點(diǎn)掛機(jī)成果,最傷的還是我們的心情。掉線(xiàn)!掉線(xiàn)!多么煩躁!掉了就給我自己乖乖重新連上!那么,用腳本該如何實(shí)現(xiàn)掉線(xiàn)重連的功能呢?一起來(lái)了解看看。
腳本思路
腳本啟動(dòng)之后,循環(huán)判斷游戲是否掉線(xiàn),如果掉線(xiàn)則重登游戲,沒(méi)有掉線(xiàn)則繼續(xù)循環(huán)判斷是否掉線(xiàn)。
步驟
1. 監(jiān)視游戲窗口。循環(huán)找掉線(xiàn)提示。監(jiān)視游戲窗口的方法:
1. 在主程序內(nèi)調(diào)用子程序無(wú)限循環(huán)判斷
2. 啟動(dòng)單獨(dú)的線(xiàn)程來(lái)監(jiān)視。小編拿武尊游戲做個(gè)掉線(xiàn)重連的例子,這里我們選擇單獨(dú)線(xiàn)程的方式來(lái)監(jiān)控。
2. 線(xiàn)程相關(guān)命令:
- BeginThread 啟動(dòng)新線(xiàn)程
- StopThread 停止線(xiàn)程運(yùn)行
- PauseThread 暫停線(xiàn)程運(yùn)行
- ContinueThread 繼續(xù)線(xiàn)程運(yùn)行
3. 啟動(dòng)"監(jiān)視"線(xiàn)程代碼:
```
線(xiàn)程ID BeginThread(監(jiān)視)
Sub 監(jiān)視
//判斷游戲是否掉線(xiàn)
End Sub
```
在線(xiàn)程中我們要循環(huán)查看游戲窗口中有沒(méi)有出現(xiàn)掉線(xiàn)窗口,我們可以通過(guò)找字或者找圖的方法,找掉線(xiàn)窗口里的標(biāo)識(shí)圖文。
找圖技巧
1. 首先將運(yùn)行游戲的瀏覽器大小調(diào)整到固定大小。本例子中瀏覽器的窗口大小為:1024,900,并且隱藏了瀏覽器收藏欄。
2. 把瀏覽器窗口先移動(dòng)到屏幕左上角坐標(biāo)(0,0)位置。
3. 使用抓抓工具將瀏覽器窗口整個(gè)抓取。
4. 在抓抓圖像里點(diǎn)擊掉線(xiàn)窗口的左上角和右下角獲取找圖的范圍。
5. 經(jīng)過(guò)第四步獲取到的找圖的范圍坐標(biāo)是相對(duì)于屏幕的,如果瀏覽器窗口移動(dòng)了,找圖范圍就是錯(cuò)誤的。所以,需要將屏幕坐標(biāo)轉(zhuǎn)換為瀏覽器窗口坐標(biāo)。
掉線(xiàn)處理邏輯
1. 找掉線(xiàn)窗口,找到則點(diǎn)擊確定。
2. 找武尊首頁(yè)的標(biāo)識(shí)圖片,例子中小編找的是"武尊首頁(yè)"這幾個(gè)文字的截圖。
3. 如果找到這張圖,說(shuō)明是第二種情況,掉線(xiàn)太久了之后返回到武尊游戲首頁(yè)。點(diǎn)擊上次進(jìn)入的區(qū)服。
4. 如果沒(méi)有找武尊首頁(yè)的截圖,則開(kāi)始找角色界面里的"進(jìn)入游戲"按鈕截圖。找到則點(diǎn)擊。
通過(guò)以上步驟,我們就可以實(shí)現(xiàn)武尊游戲掉線(xiàn)重連的功能了。
掉線(xiàn)重連腳本
```
Dim Env sRect //定義環(huán)境變量 -因?yàn)檫@個(gè)值是要傳遞到線(xiàn)程中的,如果是局部變量是不支持線(xiàn)程的。
PutAttachment "c:a*.bmp" //釋放圖片
hwnd () //獲取鼠標(biāo)指向窗口的窗口句柄
Call (hwnd, 1024, 900)//設(shè)置窗口大小為1024,900
sRect (Hwnd) //獲取窗口客戶(hù)區(qū)大小
//////////////////////////////////////////////////////////
BeginThread 監(jiān)視
Sub 監(jiān)視
MyArray Split(sRect, "|")
Do //循環(huán)找掉線(xiàn)窗口,找到的話(huà)才進(jìn)入第二個(gè)循環(huán)
L Clng(MyArray(0)): T Clng(MyArray(1)) //獲取窗口左上角坐標(biāo)
FindPic L 300,T 413,L 721,T 611,"C:掉線(xiàn).bmp", 0.9,intX,intY //找掉線(xiàn)重連圖片
If intX > 0 And intY > 0 Then
MoveTo L 568, T 566
LeftClick 1
Do //第二個(gè)循環(huán),循環(huán)找是不是首頁(yè),是的話(huà)點(diǎn)擊進(jìn)入?yún)^(qū)服,不是的話(huà)則進(jìn)入下一個(gè)循環(huán)。
FindPic L 9,T 144,L 100,T 195,"C:武尊首頁(yè).bmp", 0.9,intX,intY //找游戲首頁(yè)里的"武尊首頁(yè)"字體圖片 判斷是不是在游戲首頁(yè)
If intX > 0 And intY> 0 Then
MoveTo L 72, T 683
LeftClick 1
Delay 200
End If
Do//第三個(gè)循環(huán),找角色界面的進(jìn)入游戲按鈕,找到的話(huà)則點(diǎn)擊,沒(méi)有找到則繼續(xù)查找
FindPic L 414,T 701,L 623,T 780,"C:進(jìn)入游戲.bmp", 0.9,intX,intY //找角色界面里的"進(jìn)入游戲"字體圖片 判斷是不是在角色選擇界面
If intX > 0 And intY > 0 Then
MoveTo intX,intY
LeftClick 1
Delay 200
End If
loop
Loop
End If
Loop
End Sub
```
通過(guò)以上代碼,我們可以實(shí)現(xiàn)武尊游戲掉線(xiàn)后自動(dòng)重新登錄的功能。