|
前 言
此前我曾在論壇發(fā)過兩篇文字,即關于《如何避開宏安全級限制啟動MDB》與《VB建殼指定工作組并啟動MDB》,由于成文較為倉促,文中有不少值得探究的地方,留待以后在文章中補充或更正。
本文與此前的兩篇文字主題大同小異,仍圍繞VB輔助ACCESS進行項目開發(fā)的主題,只是側重點有所不同,但幾篇文字又都相互關聯(lián),在實際項目開發(fā)中可以綜合運用。
本文主題為:VB實現(xiàn)資源文件集成、封裝及調用。論壇中有許多朋友提及并關注這一話題,下面我將結合實例與大家共同分享自己有關這方面的一些心得。權當拋磚引玉,還是那句話,如果此文對您有所幫助,那將是本人莫大之快事!
- 本文講解要點:
1、資源文件集成與封裝
2、資源文件釋放及調用
3、封裝技巧應用 - 系統(tǒng)及平臺要求:
1、操作系統(tǒng)為:XP2
2、ACCESS為2003 版
3、VB為 6.0 - 附注及說明:
1、本文圍繞具體實例進行講解。有關實例及VB源碼可到office中國江羽空間下載
2、實例含:窗體圖片素材、圖標素材、編譯的mdw文件集成.exe、VB源碼
3、實例演示:將封裝的“security.mdw”工作組文件釋放到system32文件夾
4、本文默認你已對于VB6編程有一定了解
第一章、資源文件集成
1.1 初識VB資源編輯器
我們要實現(xiàn)資源文件集成封裝到應用程序中,首要的工作就是將預集成資源文件(本文實例:“security.mdw”工作組文件)寄存到VB資源編輯器中。
那什么VB資源編輯器?通俗說就是VB用于存放資源文件的容器。VB的資源編輯器可以存放包括:文本、圖片、二進制數(shù)據(jù)等,幾乎所有的Windows應用程序中的資源,當我們需要使用時,再從中釋放或提取出來,供我們使用。
1.2 啟動資源編輯器
步驟一:VB資源編輯器是外接程序,我們必須調用并啟動它。在VB編輯環(huán)境中點菜單[外接程序]—[外接程序管理器] (見圖1),啟動外接程序管理器窗口。
(圖1)
步驟二:選擇[VB6資源編輯器]選項—鉤選[加載/卸載]—點[確定],你在工具欄中就能看到資源編輯器圖標(見圖2)。
(圖2)
步驟三:單擊 [資源編輯器圖標] (見圖3)打開VB6資源編輯器窗口。
1.3 向VB資源編輯器添加自定義資源文件
步驟四:單擊窗口 [自定義資源] 圖標(見圖4),在 [打開一個自定義資源文件] 對話框中選擇自定義文件(實例為:“security.mdw”工作組文件),點[打開]按鈕選定資源文件就添加到資源編輯器中(見圖5),資源編輯器會出現(xiàn)CUSTOM 文件夾及[101] 自定義資源。
(圖4)
(圖5)
步驟五:點[VB資源編輯器窗口] 的 [保存] 圖標,彈出 [資源文件另存為] 對話框,點確定,才算真正完成我們的資源文件集成(見圖6)。
(圖6)
第二章、資源文件釋放及調用
要使用集成文件我們必須先釋放已集成文件到指定文件夾,然后再調用就可以,實例是將工作組文件釋放到Windows系統(tǒng)文件,即:System32中。要實現(xiàn)上述目標,我們必須先解決幾個問題:
2.1 獲取系統(tǒng)文件夾System32路徑
我們通過GetSystemDirectory API函數(shù)來編寫一個獲取系統(tǒng)文件夾自定義函數(shù),我們在工程中建立一個模塊,并將如下代碼復制到模塊中。自定函數(shù)模塊可以自動獲取系統(tǒng)文件夾路徑。
實例代碼如下:
-
- Option Explicit
- Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
- Const MAX_PATH = 250 '定義字符串長度
- '*************************************************************************
- ' 模 塊 名:GetWinSysDir
- '------------------------------------------------------------------------------------------------------------
- ' 功能描述:自定義讀取Winddows\System32 目錄函數(shù)
- ' 輸 入:無
- ' 輸 出:GetWinSysDir(String) 'System32路徑
- ' 調用模塊:GetSystemDirectory 獲取系統(tǒng)目錄
- ' 編 程:江羽
- ' 日 期:2008-10-16
- '*************************************************************************
- Public Function GetWinSysDir() As String
- Dim strSysDir As String
- Dim Length As Long
- strSysDir = String(MAX_PATH, 0) '賦值
- 'strSysDir為取得系統(tǒng)文件目錄
- Length = GetSystemDirectory(strSysDir, MAX_PATH)
- '去掉多余的空格
- strSysDir = Left(strSysDir, InStr(strSysDir, Chr(0)) - 1)
- '賦值輸出系統(tǒng)路徑
- GetWinSysDir = strSysDir
- End Function
復制代碼
2.2 資源文件釋放方法解析
我們可以通過編程,將資源編輯器中文件,以自定義文件名釋放到指定文件夾,舉例說明,假如:之前我們已將MyPro.exe文件集成至VB資源編輯的CUSTOM中,其資源編輯器中編號101,我們編程實現(xiàn):將MyPro.exe文件名釋放到C盤,代碼如下:-
- Const ExeFile = 114688 '欲生成的文件大小,原文件112K
- Dim ExeMy() As Byte 'Btye類型的數(shù)組,存放EXE文件
- Dim Counter As Long '文件字節(jié)數(shù)
- '將文件讀入數(shù)組
- ExeMy = LoadResData(101, "CUSTOM")
- Open "C:\MyPro.exe" For Binary As #1
- '從0 Byte開始因此以文件大小 - 1Byte 為終值
- For Counter = 0 To ExeFile - 1
- Put #1, , ExeMy (Counter) '釋放文件
- Next Counter
- Close #1
復制代碼
特別說明:
1、Const ExeFile = 114688 中欲生成的文件大小,是根據(jù)你前面集成到VB資源編輯器中的文件實際大小換算而來,假如:MyPro.exe 文件為 112 K ,必須換算成字節(jié),1K=1024字節(jié),112K換算后等于 114688 字節(jié)。不多也不能少,否則釋放文件將報錯。
2、LoadResData(101, "CUSTOM") 中 101 為文件集成在資源編輯品中的編號,CUSTOM為文件類型,這決定著你將釋出哪個文件。
3、Open "C:\MyPro.exe" For Binary As #1 中"C:\MyPro.exe",給出了將要釋放文件名:MyPro.exe ,路徑:C:\ ,均為字符串。
n文件名可以自定義,與集成到資源編輯器中的文件名并不要求一樣
n將要釋放文件的路徑可以根據(jù)自己需要而定
2.3 實例中釋放工作組文件代碼及說明:
-
- '*************************************************************************
- ' 模 塊 名:ReleaseMdw
- '-------------------------------------------------------------------------
- ' 功能描述:自定義過程,釋放工作組文件到指定路徑,并定義指定名稱
- ' 輸 入:strMdw(String) 工作組文件名
- ' intTime As Integer 關閉窗體延遲時間
- ' 輸 出:無
- ' 調用模塊:GetWinSysDir 獲取系統(tǒng)目錄自定義函數(shù)
- ' 實 例:ReleaseMdw "security.mdw", 2000
- ' 編 程:江羽
- ' 日 期:2008-10-16
- '*************************************************************************
- Sub ReleaseMdw(ByVal strMdw As String, ByVal intTime As Integer)
-
- Const Security = 114688 '欲生成的工作組文件大小
- Dim mdw() As Byte 'Btye類型的數(shù)組,存放工作組文件
- Dim Counter As Long '對工作組文件字節(jié)數(shù)進行循環(huán)
- Dim strSysPath As String '系統(tǒng)文件路徑
-
- Label1.Caption = "系統(tǒng)正在配置ACCESS環(huán)境,請稍候......."
-
- '獲取Windows系統(tǒng)文件夾System32路徑,并賦值變量
- strSysPath = GetWinSysDir
- mdw = LoadResData(101, "CUSTOM") '將文件讀入數(shù)組
-
- '判斷當前路徑工作組文件是否存在,& _
- 存在則退出 , 不存在則釋放工作組文件
- If Dir(strSysPath & "" & strMdw) = "" Then
- '釋放工作組文件到系統(tǒng)文件夾
- Open strSysPath & "" & strMdw For Binary As #1
- '注意因為從0 Byte開始因此以文件大小 - 1Byte 為終值
- For Counter = 0 To Security - 1
- Put #1, , mdw(Counter) '釋放工作組文件
- DoEvents '轉讓控制權
- Next Counter
- Close #1
- End If
-
- Label1.Caption = "系統(tǒng)配置成功,正在啟系統(tǒng)......."
- '啟動計時器,在指定秒數(shù)后關閉窗體
- Timer1.Interval = intTime
- End Sub
復制代碼 以上是實例中的代碼,內有詳細注釋,就不做特別說明,你可以將以上代碼復制到工程中的Form1窗體中。
代碼功能:是將集成在VB資源編輯器工作組文件,釋放到系統(tǒng)文件夾中,即:System32中,以便我們后面調用。我們自定義了一個過程,過程預留了兩個接口,一是將釋放后的文件名,二是計時器觸發(fā)時間,以便在指定時間關閉窗體,并關閉應用程序。
第三章、封裝應用程序
前面我們已經完成了關鍵的幾個步驟,我們現(xiàn)在要做的就是編譯文件,在編譯之前,我們還得做些準備工作。
3.1 添加控件并完善代碼
在Form1窗體中加入 時鐘控件,控件名:Timer1;加入 標簽控件,控件名Label1。添加窗體加載事件,時鐘控件計時器觸發(fā)事件代碼。
實例代碼如下:
-
- '*************************************************************************
- ' 模 塊 名:Form_Load
- '------------------------------------------------------------------------------------------------------------
- ' 功能描述:窗體加載事件
- ' 輸 入:無
- ' 輸 出:無
- ' 調用模塊:ReleaseMdw 釋放工作組文件到指定路徑,本實例路徑為系統(tǒng)文件夾
- ' 編 程:江羽
- ' 日 期:2008-10-16
- '*************************************************************************
- Private Sub Form_Load()
- '顯示窗體
- Me.Show
- '自定義過程,"security.mdw"指定釋的文件名,2000延遲關閉窗體時間
- ReleaseMdw "security.mdw", 2000
- End Sub
- '*************************************************************************
- ' 模 塊 名:Timer1_Timer
- '-------------------------------------------------------------------------------------------------------------
- ' 功能描述:計時器事件
- ' 輸 入:無
- ' 輸 出:無
- ' 調用模塊:
- ' 編 程:江羽
- ' 日 期:2008-10-16
- '*************************************************************************
- Private Sub Timer1_Timer()
- '關閉應程序
- End
- End Sub
復制代碼 將以上代碼復制到Form1 中,我們就可以開始編譯了
3.2 編譯工程,完成封裝
為了讓我們啟動窗口美觀,你還可以在Form1窗體中加入背景圖,另外還可以定制自己圖標,在此不做說明。然后點擊菜單:[文件]—[工程1.exe],在工程所在文件夾內,你能看到我們編譯好的應用程序,實例文件名[mdw文件集成.exe]。當我們點擊運行程序,會自動釋放"security.mdw"工作組文件到System32中。 至于如何指定工作組文件啟動MDB項目,在此不做講解,大家可以參看我在此前的發(fā)文。
至此,本文與大家分享東西到此告一個段落,剩下的就是運行我們編譯的EXE文件看看自己辛苦的勞動成果!以后我將再與大家分享關于DLL組件使用及封裝的有關技巧與方法。
注:有關此文的實例、素材及VB源碼,您可以到Office中國江羽空間下載。
作者:江羽
2008-10-16 晚
Word文稿下載:
[ 本帖最后由 tanhong 于 2008-10-19 11:50 編輯 ] |
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號?注冊
x
評分
-
查看全部評分
|