1. 程式人生 > >Vbs指令碼程式設計簡明教程之十五——響應事件

Vbs指令碼程式設計簡明教程之十五——響應事件

什麼是事件?在我看來,事件就象我們手機上的鬧鐘,鬧鐘一響,我們就要去做某些特定的事情。或者這樣說,事件就像警鐘,當程式執行時,有特殊的事情發生,就會激發事件,事件本身就是一條訊息,如果你編寫的指令碼要對事件進行處理,就需要一個特殊的過程或者函式來接受和處理事件。那麼這個特殊的過程或者函式在程式執行時,就不斷的監聽,看系統是否傳來了相應的事件,一旦接受到事件,指令碼對此作出反應。

那麼事件是從那裡來的呢?是否需要我們在指令碼中對事件進行編寫呢?一般情況下,事件是某個程式在執行中的特殊狀態發出的,我們不需要對事件進行編寫,只需要編寫處理事件的函式。比如說我們用vbs建立了ie的一個例項,那麼當ie的視窗被關閉的時候,就會激發出一個叫做OnQuit的事件。

是不是指令碼自然而然就能接受事件並進行處理呢?我們說不是的,在建立物件的時候,我們將使用WSH的createobject命令,例如:

Set objie=Wscript.createobject(“internetexplorer.application”,”event_”)

注意到了嗎?多了一個引數,這個引數的作用是什麼呢?它叫做事件接收端,當指令碼連線的物件包含事件時,如果物件呼叫的事件是OnBegin,那麼WSH將會在指令碼中呼叫一個event_OnBegin的事件處理程式。當然事件接受端並不是固定的,如果物件將其定義為MyObj_的話,那麼事件處理程式將是:MyObj_OnBegin。

是否很熟悉?在打造個性化QQ一講中,曾經出現過Window_OnSize(cx,cy)函式,它其實就是一個事件處理程式。

讓我們來舉個實際的例子完整的看看事件的處理過程:

Set objie=WScript.CreateObject("InternetExplorer.Application","event_")

objie.Visible=True

MsgBox "請關閉瀏覽器視窗看看效果!",vbSystemModal

Wscript.sleep 6000

MsgBox "現在已經正常關閉了"

Sub event_onquit()

MsgBox "您確定要關閉瀏覽器嗎?",vbSystemModal

End Sub

這段指令碼打開了一個IE視窗,然後要求你關閉IE視窗,當你關閉視窗的時候,自動呼叫事件響應程式。