top
Loading...
VBCOM基礎講座之測試ActiveXEXEs
本節將創建并測試自己的ActiveX EXE程序。

示例中將使用這樣一個組件,它是一個有效的文件探測器。大約每隔60秒檢測指定文件的存在性。如何該文件存在,該組件激發一個事件來調用應用程序,如果不存在,則另作處理。

當然,如果將所有代碼寫到ActiveX DLL工程,則運行時程序代碼將被掛起直到文件檢測代碼運行完畢為止。由于ActiveX EXE工程擁有自己的進程空間,代碼運行時會自我協調、異步處理,從而不會使其他程序代碼停頓。

下面就來創建:

新建一個"ActiveX EXE"工程;

工程名設為"File";

添加的類名為"FileCheck";

下一步,我們需要構造一些用于每隔1分鐘左右檢測文件的代碼。這里將在ActiveX EXE工程插入一個帶有計時器的表單。但該表單不會被顯示,因為我們只是使用上面的計時器控件每隔1分鐘左右來檢測文件,如果相應的文件被檢測到,則激發一個事件。

選擇"Project"->"Add Form";

在表單Form1中添加一個計時器;

在表單代碼中添加下列變量的聲明:

Public Filename As String

該變量用于保存被監視的文件名。

在表單代碼中添加下列事件的聲明:

Public Event FileFound()

該事件只有當前面的文件發現后才被激發。

在Timer1代碼中添加下列語句:

Private Sub Timer1_Timer()

If Dir(Filename) <> "" Then

RaiseEvent FileFound

Timer1.Interval = 0

End If

End Sub

代碼中,首先簡單地檢測文件,若存在則激發FileFound事件,然后將Timer1的時間間隔設為0,停止以后的檢測。

打開FileCheck類;

在通用聲明處添加下列對象的聲明:

Dim WithEvents objFileCheck As Form1

這就是Form1的代碼,它通知Visual Basic上述定義的對象是用來保存表單的。關鍵詞WithEvents表示該類可以接收傳送來的事件,如前面的FileFound等。

本節將創建并測試自己的ActiveX EXE程序。

示例中將使用這樣一個組件,它是一個有效的文件探測器。大約每隔60秒檢測指定文件的存在性。如何該文件存在,該組件激發一個事件來調用應用程序,如果不存在,則另作處理。

當然,如果將所有代碼寫到ActiveX DLL工程,則運行時程序代碼將被掛起直到文件檢測代碼運行完畢為止。由于ActiveX EXE工程擁有自己的進程空間,代碼運行時會自我協調、異步處理,從而不會使其他程序代碼停頓。

下面就來創建:

新建一個"ActiveX EXE"工程;

工程名設為"File";

添加的類名為"FileCheck";

下一步,我們需要構造一些用于每隔1分鐘左右檢測文件的代碼。這里將在ActiveX EXE工程插入一個帶有計時器的表單。但該表單不會被顯示,因為我們只是使用上面的計時器控件每隔1分鐘左右來檢測文件,如果相應的文件被檢測到,則激發一個事件。

選擇"Project"->"Add Form";

在表單Form1中添加一個計時器;

在表單代碼中添加下列變量的聲明:

Public Filename As String

該變量用于保存被監視的文件名。

在表單代碼中添加下列事件的聲明:

Public Event FileFound()

該事件只有當前面的文件發現后才被激發。

在Timer1代碼中添加下列語句:

Private Sub Timer1_Timer()

If Dir(Filename) <> "" Then

RaiseEvent FileFound

Timer1.Interval = 0

End If

End Sub

代碼中,首先簡單地檢測文件,若存在則激發FileFound事件,然后將Timer1的時間間隔設為0,停止以后的檢測。

打開FileCheck類;

在通用聲明處添加下列對象的聲明:

Dim WithEvents objFileCheck As Form1

這就是Form1的代碼,它通知Visual Basic上述定義的對象是用來保存表單的。關鍵詞WithEvents表示該類可以接收傳送來的事件,如前面的FileFound等。
從"Object"下拉列表框中選擇"Class";

再從"Procedure"下拉列表框中選擇"Initialize";

在Class_Initialize事件中添加下列代碼:

Private Sub Class_Initialize()

Set objFileCheck = New Form1

End Sub

該代碼簡單地使objFileCheck等于Form1的新的一個實例。之后,我們將使用在Form1中添加的功能。接下來,我們編寫一個子過程用來監視一個文件。

在FileCheck中添加下列代碼:

Public Sub MonitorFile(Filename As String)

objFileCheck.Filename = Filename

objFileCheck.Timer1.Interval = 60000

End Sub

當我們調用此過程時,需要給出文件名參數。這時,表單的Filename變量保存該文件名,然后將計時器的時間間隔屬性設置為60,000毫秒并激活該計時器。

至此,我們構造了用于監視文件的所有代碼。但是當文件檢測到時,我們需要通過激發FileFound事件通知程序正在使用ActiveX EXE。

在通用聲明部分添加下列事件聲明:

Public Event FileFound(Filename As String)

該代碼只是簡單地定義一個FileFound事件,下一步該事件的相應代碼。

從"Object"下拉列表框中選擇"objFileCheck";

再從"Procedure"下拉列表框中選擇"FileFound";

Private Sub objFileCheck_FileFound ( )

RaiseEvent FileFound ( objFileCheck.Filename)

End Sub

顯然,當文件檢測到時,這里的FileFound事件就被激發。但我們還需要在使用EXE程序中添加這個事件的添加代碼。

在objFileCheck_FileFound事件中添加下列代碼:

RaiseEvent FileFound(objFileCheck.Filename)

這就是我們的全部代碼。

當程序員使用該類時,都可以文件名為參數調用MonitorFile方法,然后表單中的計時器被引發,每隔60秒鐘檢測一下文件,若該文件被查找到,則激發FileCheck類中的事件,該事件又激發相關的應用程序中的另一個事件,用來通知程序員,該文件已被找到。

明白了嗎?讓我們試試看吧!
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗