【綜合教程】關(guān)閉指定彈窗,延遲最佳加法,內(nèi)循環(huán)的妙用,子程序變量傳遞 - 新手專區(qū) - 按鍵精靈論壇 - Powered by Discuz!
本帖隱藏的內(nèi)容
//下面是VBS的方法- Set WSHShell=CreateObject("Wscript.Shell")intMsg=WSHShell.Popup ("提示內(nèi)容",多少秒后關(guān)閉,"彈窗的標(biāo)題",vbOKOnly)
復(fù)制代碼 //下面這個是獲取句炳按回車的方法,放到彈出窗口之后的地方- DoHwnd = Plugin.Window.Find(0, "彈窗的標(biāo)題")If Hwnd > 0 Then//如果發(fā)現(xiàn)彈窗Call Plugin.Bkgnd.KeyPress(Hwnd, 27)//通過按下回車鍵關(guān)閉窗口End IfDelay 500Loop Until Hwnd > 0
復(fù)制代碼 //如不知道放哪里也可以用這個代碼,多線
程獲取句炳關(guān)閉,放到程序最上面,不過這個會比較占資源- BeginThread 關(guān)閉
- Sub 關(guān)閉()
- Do
- Hwnd = Plugin.Window.Find(0, "彈窗的標(biāo)題")
- If Hwnd > 0 Then//如果發(fā)現(xiàn)彈窗
- Call Plugin.Bkgnd.KeyPress(Hwnd, 27)//同上
- End If
- Delay 500
- Loop
- End Sub
復(fù)制代碼 你是否遇到過腳本卡的情況呢,詢問論壇的老鳥怎么解決,都在說加延遲,那么你知道延遲加在哪里的效果最好嗎?那么回復(fù)下吧本帖隱藏的內(nèi)容
- While 1
- Delay 300 //這里的延遲最重要,這是整個循環(huán)的核心,所以這里必須上延遲,補(bǔ)上延遲和延遲100毫秒的效果是差很遠(yuǎn)的
- FindColor 0,0,1024,768,"0000FF",intX,intY//找色一
- If intX > 0 And intY > 0 Then
- //很多人都往這個位置加延遲,其實這里沒有多大效果
- MoveTo intX, intY
- LeftClick 1
- //這里是加延遲的好地方,如果腳本在這里執(zhí)行延遲,那么整個循環(huán)會暫時停止,所以想要腳本穩(wěn)定,就必須在這里上50-150之間的延遲
- End If
- //這個位置是找色二的開始,建議50就夠了
- FindColor 0,0,1024,768,"0000FF",intX,intY//找色一
- If intX > 0 And intY > 0 Then
- MoveTo intX, intY
- LeftClick 1 //同上
- End If
- Wend
復(fù)制代碼 //下面看這個書寫腳本錯誤的例子,前面是循環(huán),后面是子程序的調(diào)用,這個腳本開始執(zhí)行沒問題,但是后面會奔潰//這是因為每次調(diào)用一次子程序都會占用一段內(nèi)存來保存未執(zhí)行的部分(彈出對話框的部分被保存),所以內(nèi)存占用會越來越多最終導(dǎo)致崩潰- Do
- Call 子程序
- loop
- Sub 子程序
- Call 子程序a //調(diào)用子程序a
- MessageBox("1")
- End Sub
- Sub 子程序a
- MessageBox("2")
- End Sub
復(fù)制代碼 //這個大家應(yīng)該重視下,下面可以通過延遲的方法很好的解決這個問題- Do
- Delay 300
- Call 子程序
- loop
- Sub 子程序
- Delay 300
- Call 子程序a //調(diào)用子程序a
- MessageBox ("1")
- Delay 50
- End Sub
- Sub 子程序a
- Delay 300
- MessageBox ("2")
- Delay 50
- End Sub
復(fù)制代碼 //調(diào)用上面的代碼發(fā)現(xiàn)CPU明顯下降
你是否遇到過要腳本循環(huán)做某事,然后如果某事做成,循環(huán)結(jié)束繼續(xù)循環(huán)做其他事情,想必大家都在用調(diào)用子程序來達(dá)到目的吧,下面的內(nèi)循環(huán)妙用可以很好解決這個問題本帖隱藏的內(nèi)容
- Sub 內(nèi)循環(huán)
- a = 0
- While a = 0 //執(zhí)行這個循環(huán)
- Delay 300
- FindColor 0,0,1024,768,"0000FF",intX,intY
- If intX > 0 And intY > 0 Then
- MoveTo intX, intY
- LeftClick 1 //條件成立退出循環(huán)
- Delay 50
- a =1
- End If
- Wend
- Delay 500
- While a = 1//執(zhí)行這個循環(huán)
- Delay 300
- FindColor 0,0,1024,768,"0000FF",intX,intY
- If intX > 0 And intY > 0 Then
- MoveTo intX, intY
- LeftClick 1 //條件成立退出循環(huán)
- Delay 50
- a = 2
- End If
- Wend
- Delay 500
- While a = 2//執(zhí)行這個循環(huán)
- Delay 300
- FindColor 0,0,1024,768,"0000FF",intX,intY
- If intX > 0 And intY > 0 Then
- MoveTo intX, intY
- LeftClick 1 //條件成立退出循環(huán)
- Delay 50
- a = 3
- End If
- Wend
- End Sub
復(fù)制代碼 怎樣方法是不是很新穎呢? 你是否遇到過當(dāng)條件成立時,所做的動作都是一樣的?比如找到色或者圖片執(zhí)行的動作,都是移動點擊或者按下鍵盤嗎?如果一個一個來寫會不會很麻煩呢?現(xiàn)在學(xué)會了子程序的變量傳遞就可以很好解決這個問題!{:4_111:}下面看看普通的寫法:本帖隱藏的內(nèi)容
- Do
- Delay 300
- FindColor 0,0,1024,768,"0000FF",intX,intY
- If intX > 0 And intY > 0 Then
- MoveTo intX, intY
- LeftClick 1
- End If
- Delay 50
- FindColor 0,0,1024,768,"0000FF",intX,intY
- If intX > 0 And intY > 0 Then
- MoveTo intX, intY
- LeftClick 1
- End If
- Delay 50
- FindColor 0,0,1024,768,"0000FF",intX,intY
- If intX > 0 And intY > 0 Then
- MoveTo intX, intY
- LeftClick 1
- End If
- Delay 50
- FindColor 0,0,1024,768,"0000FF",intX,intY
- If intX > 0 And intY > 0 Then
- MoveTo intX, intY
- LeftClick 1
- End If
- Loop
復(fù)制代碼 這樣的寫法是不是非常長而且容易出錯呢?但是細(xì)心我們可以發(fā)現(xiàn),每次找到圖片都是移動到指定位置然后點擊,因此我們可以這樣來寫。- Do
- Delay 300
- FindColor 0,0,1024,768,"5545",intX,intY
- If intX > 0 And intY > 0 Then
- Call 子程序變量傳遞(intX,intY)
- End If
- Loop
- Sub 子程序變量傳遞(a,b)
- MoveTo a,b
- LeftClick 1
- End Sub
復(fù)制代碼 這樣是不是很節(jié)儉了呢?好了教程就到這里,感謝回復(fù)查看
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。