按鍵精靈中并沒有計(jì)時(shí)器,如果我們需要執(zhí)行某個(gè)操作10秒鐘,這樣將會(huì)很麻煩,因?yàn)?span href="tools/ajax.aspx?t=topicswithsametag&tagid=16" class="t_tag" style="margin: 0px; padding: 0px; word-wrap: break-word; line-height: 24.5px; border-bottom: 1px solid rgb(255, 0, 0); cursor: pointer; white-space: nowrap;">程序要么停下來只是數(shù)過了幾秒,要么就嗖嗖嗖的跑程序不知道跑多久,我們需要它一邊計(jì)時(shí)的同時(shí)跑程序,所以需要計(jì)時(shí)器控制程序,做到某段程序僅執(zhí)行一定的時(shí)間。好了,進(jìn)入正題! Global k //全局變量k,用于在計(jì)時(shí)結(jié)束時(shí)給個(gè)信號(hào)已結(jié)束下面的循環(huán) k=0 BeginThread time // 啟動(dòng)線程time Delay 100 i=0 While k = 0 Delay 1000 TracePrint "過了 " & i & " 秒!" TracePrint "K值為 " & k & " !"//僅僅表示程序在跑While時(shí)候同時(shí)在跑sub time計(jì)時(shí) i=i+1 Wend Sub time() //作為線程函數(shù) k = Lib.MyTool.Timer(5000, 10) //函數(shù)為我在命令庫里自己建的文件(MyTool)下的函數(shù),設(shè)置為執(zhí)行5秒,結(jié)束后Tiemr返回 10 故過5秒后k=10 End Sub /************下面函數(shù)為我在命令庫里自己建的文件(MyTool)下的函數(shù)***************/ Function Timer(time,n)//time為需要計(jì)時(shí)時(shí)間,n為計(jì)時(shí)結(jié)束后返回的值,需要n的原因在于作為標(biāo)號(hào),結(jié)束時(shí)根據(jù)標(biāo)號(hào)判斷結(jié)束的是哪一段程序,方便調(diào)試及編程 T1 = Plugin.Sys.GetTime//獲取執(zhí)行前系統(tǒng)時(shí)間 t=0 While time >= t T2 = Plugin.Sys.GetTime//執(zhí)行時(shí)刻時(shí)間監(jiān)測 t = T2 - T1 Wend Timer = n End Function 好了,有同學(xué)可能覺得程序中為了計(jì)時(shí)器加這個(gè)代碼亂,其實(shí)我也這么覺得,所以我后面把他們都封裝起來直接調(diào)用~ 下面看!
主要代碼就兩句,就可以實(shí)現(xiàn)多線程計(jì)時(shí)器,一個(gè)是啟用計(jì)時(shí),一個(gè)是獲取結(jié)束計(jì)時(shí)時(shí)候的返回值。 Call Lib.MyTool.Timer(計(jì)時(shí)時(shí)間) Lib.MyTool.TimerF(循環(huán)體循環(huán)數(shù),自定義返回?cái)?shù))
存在問題,不知道按鍵創(chuàng)建進(jìn)程是否會(huì)自動(dòng)銷毀進(jìn)程,不然運(yùn)行時(shí)間長的話會(huì)出問題。 |
|