第 12 章 建立多表單與模組的應用程式

35
12 12 第第第第第第第第第第第第第 第第第第第第第第第第第第第 12-1 Visual Basic 12-1 Visual Basic 第第第第第第 第第第第第第 12-2 12-2 第第第 第第第 Visual Basic Visual Basic 第第第第 第第第第 12-3 12-3 第第第第第第第第第第 第第第第第第第第第第 12-4 12-4 第第第第第第第第第第第第 第第第第第第第第第第第第 12-5 12-5 第第第第第第第第 第第第第第第第第

Upload: suzuki

Post on 05-Jan-2016

56 views

Category:

Documents


0 download

DESCRIPTION

第 12 章 建立多表單與模組的應用程式. 12-1 Visual Basic 的方案與專案 12-2 模組化 Visual Basic 應用程式 12-3 建立多表單的應用程式 12-4 建立多文件介面的應用程式 12-5 執行外部應用程式. 12-1 Visual Basic的方案與專案. 12-1-1 Visual Basic 的專案 12-1-2 Visual Basic 的方案. 12-1-1 Visual Basic 的專案 - 說明. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 12 章  建立多表單與模組的應用程式

第第 1212 章 章 建立多表單與模組的應建立多表單與模組的應用程式用程式

12-1 Visual Basic12-1 Visual Basic 的方案與專案的方案與專案 12-2 12-2 模組化模組化 Visual BasicVisual Basic 應用程式應用程式 12-3 12-3 建立多表單的應用程式建立多表單的應用程式 12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 12-5 12-5 執行外部應用程式執行外部應用程式

Page 2: 第 12 章  建立多表單與模組的應用程式

12-1 Visual Basic12-1 Visual Basic的方案與專案的方案與專案 12-1-1 Visual Basic12-1-1 Visual Basic 的專案的專案 12-1-2 Visual Basic12-1-2 Visual Basic 的方案的方案

Page 3: 第 12 章  建立多表單與模組的應用程式

12-1-1 Visual Basic12-1-1 Visual Basic 的專案的專案 -- 說說明明

在本書前建立的主控台或在本書前建立的主控台或 WindowsWindows 應用應用程式,都是隸屬於同名方案的程式,都是隸屬於同名方案的 Visual Visual BasicBasic 專案。如果準備建立大型應用程式,專案。如果準備建立大型應用程式,在一個方案下可能需要建立多個專案。在一個方案下可能需要建立多個專案。

Visual BasicVisual Basic 專案是方案中的容器,每一專案是方案中的容器,每一個專案可以建立執行檔(個專案可以建立執行檔( .exe.exe )、動態連)、動態連結程式庫(結程式庫( .dll.dll )或模組()或模組( ModulesModules )等。)等。

Page 4: 第 12 章  建立多表單與模組的應用程式

12-1-1 Visual Basic12-1-1 Visual Basic 的專案的專案 -- 專案的專案的基礎基礎

Visual BasicVisual Basic 專案的資訊是儲存在副檔名專案的資訊是儲存在副檔名為為 .vbproj.vbproj 的檔案,在專案檔案記錄建立應用程的檔案,在專案檔案記錄建立應用程式所需的檔案、資料夾和編譯等相關資訊。式所需的檔案、資料夾和編譯等相關資訊。

請開啟或自行建立「範例程式請開啟或自行建立「範例程式 \Ch12\Ch12-1-\Ch12\Ch12-1-11 」資料夾的」資料夾的 Visual BasicVisual Basic 專案,就可以在右上專案,就可以在右上角看到「方案總管」視窗,如下圖所示:角看到「方案總管」視窗,如下圖所示:

Page 5: 第 12 章  建立多表單與模組的應用程式

12-1-1 Visual Basic12-1-1 Visual Basic 的專案的專案 -- 專案的專案的屬性頁屬性頁 (( 圖例圖例 ))

在「方案總管」視窗的在「方案總管」視窗的【【 Ch12-1-1Ch12-1-1 】】專專案上執行右鍵快顯功能表的案上執行右鍵快顯功能表的【【屬性屬性】】指令,指令,可以看到專案的屬性頁。可以看到專案的屬性頁。

Page 6: 第 12 章  建立多表單與模組的應用程式

12-1-1 Visual Basic12-1-1 Visual Basic 的專案的專案 -- 專案的專案的屬性頁屬性頁 (( 屬性說明屬性說明 ))

【【應用程式應用程式】】標籤的常用屬性,如下表所標籤的常用屬性,如下表所示:示:屬性 說明

組件名稱 應用程式的輸出檔案名稱應用程式類型 建置的應用程式類型,以此例是Windows應用程式啟動表單 執行應用程式呼叫的進入點,即執行程式的第 1個物件,以

此例是 Form1表單根名稱空間 專案檔案的「名稱空間」(Namespace),或稱為命名空間,

詳細說明請參閱第 17章啟用應用程式架

構是否使用Windows應用程式架構,勾選可以進一步設定下方應用程式架構的相關屬性;如果取消,可以指定上方啟動

物件為模組的 Sub Main主程式

Page 7: 第 12 章  建立多表單與模組的應用程式

12-1-1 Visual Basic12-1-1 Visual Basic 的專案的專案 -- 專案的專案的種類種類

在在 VBEVBE 新增專案時提供多種專案範本,可新增專案時提供多種專案範本,可以幫助我們快速建立所需的應用程式,如以幫助我們快速建立所需的應用程式,如下表所示:下表所示:專案範本 說明

Windows應用程式 建立獨立的Windows應用程式類別庫 建立可以和其他專案共用的類別或元件

主控台應用程式 建立在命令提示字元或MS-DOS執行的命令列應用程式

Page 8: 第 12 章  建立多表單與模組的應用程式

12-1-2 Visual Basic12-1-2 Visual Basic 的方案的方案 -- 說說明明

如果使用如果使用 VBEVBE 建立大型應用程式,除了建建立大型應用程式,除了建立立 Visual BasicVisual Basic的的WindowsWindows 應用程式外,應用程式外,我們可能需要同時建立多個類別庫,此時我們可能需要同時建立多個類別庫,此時就需要在同一個方案建立多個專案來開發就需要在同一個方案建立多個專案來開發應用程式。應用程式。

Page 9: 第 12 章  建立多表單與模組的應用程式

12-1-2 Visual Basic12-1-2 Visual Basic 的方案的方案 -- 方案的方案的基礎基礎

方案簡單的說是專案的容器,方案簡單的說是專案的容器,內含一到多個專案,使內含一到多個專案,使用用 .sln.sln和和 .suo.suo 儲存方案的儲存方案的定義。請開啟「範例程式定義。請開啟「範例程式 \\Ch12\Ch12-1-2Ch12\Ch12-1-2 」資料夾」資料夾的的 Visual BasicVisual Basic 專案,可以專案,可以看到「方案總管」視窗,如看到「方案總管」視窗,如右圖所示:右圖所示:

Page 10: 第 12 章  建立多表單與模組的應用程式

12-1-2 Visual Basic12-1-2 Visual Basic 的方案的方案 -- 建立多建立多專案的方案專案的方案

VBEVBE 在預設情況下,同一個方案只建立一在預設情況下,同一個方案只建立一個專案,如果需要在方案新增其他專案,個專案,如果需要在方案新增其他專案,如下圖所示:如下圖所示:

Page 11: 第 12 章  建立多表單與模組的應用程式

12-2 12-2 模組化模組化 Visual BasicVisual Basic 應用程式應用程式 12-2-1 12-2-1 新增表單新增表單 12-2-2 12-2-2 新增模組新增模組 12-2-3 12-2-3 模組等級的範圍模組等級的範圍 12-2-4 12-2-4 指定啟動表單或模組指定啟動表單或模組

Page 12: 第 12 章  建立多表單與模組的應用程式

12-2-1 12-2-1 新增表單新增表單 -- 說明說明 Visual BasicVisual Basic 應用程式如果使用模組化程應用程式如果使用模組化程

式設計,在應用程式中的表單、模組和類式設計,在應用程式中的表單、模組和類別等都可以視為是一個個模組。別等都可以視為是一個個模組。

到目前為止的範例程式都只有單一表單,到目前為止的範例程式都只有單一表單,對於複雜的應用程式,我們可以建立多個對於複雜的應用程式,我們可以建立多個表單和新增共用程序與函數的模組。表單和新增共用程序與函數的模組。

事實上,大部分的應用程式都不是單一表事實上,大部分的應用程式都不是單一表單的應用程式,如果程式需要多個表單使單的應用程式,如果程式需要多個表單使用介面,大部分是指對話方塊。我們可以用介面,大部分是指對話方塊。我們可以在在 Visual BasicVisual Basic 專案加入所需表單,預設專案加入所需表單,預設是以是以 Form2~n.vbForm2~n.vb 依序來命名。依序來命名。

Page 13: 第 12 章  建立多表單與模組的應用程式

12-2-1 12-2-1 新增表單新增表單 -- 在專案加入新表在專案加入新表單單

在在 Visual BasicVisual Basic 的專案加入新表單的方法的專案加入新表單的方法有有 22 種,如下所示:種,如下所示:• 在「方案總管」視窗的專案上,執行右鍵快顯在「方案總管」視窗的專案上,執行右鍵快顯

功能表的「加入功能表的「加入 // 加入加入 Windows FormWindows Form 」指」指令,就可以新增表單。令,就可以新增表單。

• 在開啟專案後,執行「專案在開啟專案後,執行「專案 // 加入加入 Windows Windows FormForm 」指令來新增表單,本節的範例程式是」指令來新增表單,本節的範例程式是使用此方式。使用此方式。

Page 14: 第 12 章  建立多表單與模組的應用程式

12-2-1 12-2-1 新增表單新增表單 -- 開啟與關閉新表開啟與關閉新表單單

如果如果 Visual BasicVisual Basic 專案擁有多個表單,除專案擁有多個表單,除非將它設為啟動表單,否則非將它設為啟動表單,否則 Form1Form1 表單需表單需要使用程式碼來開啟其他表單,如下所示:要使用程式碼來開啟其他表單,如下所示:Dim f2 As Form2Dim f2 As Form2f2 = New Form2()f2 = New Form2()f2.Show()f2.Show()

程式碼在宣告程式碼在宣告 Form2Form2 表單物件變數表單物件變數 f2f2 後,後,使用使用 Show()Show() 方法開啟方法開啟 Form2Form2 表單。關閉表單。關閉表單是使用表單是使用 Close()Close() 方法,如下所示:方法,如下所示:f2.Close()f2.Close()

Page 15: 第 12 章  建立多表單與模組的應用程式

12-2-2 12-2-2 新增模組新增模組 -- 說明說明 Visual BasicVisual Basic 模組(模組( ModulesModules )是一種參考資)是一種參考資

料型態,在料型態,在 Visual BasicVisual Basic 專案加入模組檔案,預專案加入模組檔案,預設使用設使用 Module1~n.vbModule1~n.vb 命名,通常專案中的模命名,通常專案中的模組是用來建立表單共享的程序與函數。組是用來建立表單共享的程序與函數。

表單表單 Form1.vbForm1.vb 是類別(是類別( ClassClass )檔案,在表單)檔案,在表單建立的程序與函數需要使用物件方法來呼叫,但建立的程序與函數需要使用物件方法來呼叫,但是位在模組宣告的公用(是位在模組宣告的公用( PublicPublic )變數或程序與)變數或程序與函數,就能夠使用如同函數,就能夠使用如同 Visual BasicVisual Basic 內建函數的內建函數的方式來進行呼叫。方式來進行呼叫。

Page 16: 第 12 章  建立多表單與模組的應用程式

12-2-2 12-2-2 新增模組新增模組 -- 範例範例01: Module Module101: Module Module102: 02: 03: Public Function SearchText(ByVal strSource _03: Public Function SearchText(ByVal strSource _ As String, ByVal strTarget As String, _As String, ByVal strTarget As String, _ ByVal start As Integer) As IntegerByVal start As Integer) As Integer04: Return InStr(start, strSource, strTarget)04: Return InStr(start, strSource, strTarget)05: End Function05: End Function06: 06: 07: Public Function ReplaceText(ByVal strSource _07: Public Function ReplaceText(ByVal strSource _ As String, ByVal strReplace As String, ByVal _As String, ByVal strReplace As String, ByVal _ start As Integer, ByVal len As Integer) As Stringstart As Integer, ByVal len As Integer) As String08: Dim strLeft, strRight As String08: Dim strLeft, strRight As String09: strLeft = Mid(strSource, 1, start)09: strLeft = Mid(strSource, 1, start)10: strRight = Mid(strSource, start + len + 1)10: strRight = Mid(strSource, start + len + 1)11: Return strLeft & strReplace & strRight11: Return strLeft & strReplace & strRight12: End Function12: End Function13: 13: 14: End Module14: End Module

Page 17: 第 12 章  建立多表單與模組的應用程式

12-2-3 12-2-3 模組等級的範圍模組等級的範圍 模組等級範圍可以套用在模組、類別與結模組等級範圍可以套用在模組、類別與結

構,如果在模組、類別與結構宣告變數、構,如果在模組、類別與結構宣告變數、程序與函數,就屬於此等級的範圍。其宣程序與函數,就屬於此等級的範圍。其宣告使用的存取關鍵字,如下所示:告使用的存取關鍵字,如下所示:• PrivatePrivate :宣告成:宣告成 PrivatePrivate 的變數、程序與函的變數、程序與函

數,只能在該模組中的程序與函數來存取與呼數,只能在該模組中的程序與函數來存取與呼叫。叫。

• PublicPublic :如果宣告成:如果宣告成 PublicPublic 的變數、程序與的變數、程序與函數,可以在整個函數,可以在整個 Visual BasicVisual Basic 應用程式中各應用程式中各模組的程序與函數來存取與呼叫。模組的程序與函數來存取與呼叫。

Page 18: 第 12 章  建立多表單與模組的應用程式

12-2-4 12-2-4 指定啟動表單或模組指定啟動表單或模組 Visual BasicVisual Basic 專案預設的啟動表單是專案預設的啟動表單是

Form1Form1 表單,我們可以將它指定成其他表表單,我們可以將它指定成其他表單或擁有程序單或擁有程序 Main()Main() 主程式的模組。如下主程式的模組。如下圖所示:圖所示:

Page 19: 第 12 章  建立多表單與模組的應用程式

12-3 12-3 建立多表單的應用程式建立多表單的應用程式 -- 說明說明 在在 Visual BasicVisual Basic 建立多表單的建立多表單的 WindowsWindows

應用程式,其目的通常是為了建立不同的應用程式,其目的通常是為了建立不同的資料輸入介面。例如:建立資料輸入介面。例如:建立 WindowsWindows 應應用程式的「尋找和取代」功能,在執行後用程式的「尋找和取代」功能,在執行後可以顯示表單或對話方塊,用來輸入搜尋可以顯示表單或對話方塊,用來輸入搜尋和取代字串。和取代字串。

換句話說,除了第換句話說,除了第 1010 章的預設對話方塊外,章的預設對話方塊外,我們也可以自行建立表單作為對話方塊用我們也可以自行建立表單作為對話方塊用途。表單或對話方塊依照資料輸入方式分途。表單或對話方塊依照資料輸入方式分為:非強制回應和強制回應表單。為:非強制回應和強制回應表單。

Page 20: 第 12 章  建立多表單與模組的應用程式

12-3 12-3 建立多表單的應用程式建立多表單的應用程式 --非強制回應表單(非強制回應表單( ModelessModeless ))

非強制回應表單開啟的表單是一個獨立表單,使非強制回應表單開啟的表單是一個獨立表單,使用者可以在各表單間移動焦點,其地位是相等的。用者可以在各表單間移動焦點,其地位是相等的。通常在應用程式的工具視窗,就屬於這種表單,通常在應用程式的工具視窗,就屬於這種表單,使用者可以自行決定執行哪一個表單的功能。使用者可以自行決定執行哪一個表單的功能。

當在當在 Visual BasicVisual Basic 專案加入表單後,表單是使用專案加入表單後,表單是使用Show()Show() 方法來開啟,如下所示:方法來開啟,如下所示:f2 = New Form2()f2 = New Form2()f2.Show()f2.Show()

上述程式碼在建立表單上述程式碼在建立表單 Form2Form2 物件後,使用物件後,使用Show()Show() 方法開啟非強制回應表單方法開啟非強制回應表單 Form2Form2 。。

Page 21: 第 12 章  建立多表單與模組的應用程式

12-3 12-3 建立多表單的應用程式建立多表單的應用程式 --強制回應表單(強制回應表單( ModalModal ))

強制回應表單就是對話方塊,在開啟表單或對話強制回應表單就是對話方塊,在開啟表單或對話方塊後,使用者需要輸入資料和關閉視窗後,才方塊後,使用者需要輸入資料和關閉視窗後,才能繼續執行應用程式。例如:能繼續執行應用程式。例如: MsgBox()MsgBox() 函數的函數的WindowsWindows 訊息視窗,就屬於這種表單。訊息視窗,就屬於這種表單。

在在 Visual BasicVisual Basic 專案加入表單後,表單是使用專案加入表單後,表單是使用ShowDialog()ShowDialog() 方法開啟表單,如下所示:方法開啟表單,如下所示:f3 = New Form3()f3 = New Form3()

f3.ShowDialog() ' f3.ShowDialog() ' 開啟對話方塊開啟對話方塊If f3.DialogResult = DialogResult.OK ThenIf f3.DialogResult = DialogResult.OK Then

…… ……

End IfEnd If

Page 22: 第 12 章  建立多表單與模組的應用程式

12-3 12-3 建立多表單的應用程式建立多表單的應用程式 --圖例圖例

Page 23: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --說明說明

「多文件介面」(「多文件介面」( Multiple-document Multiple-document InterfaceInterface )不同於上一節的多表單應用程式,)不同於上一節的多表單應用程式,它是在父它是在父 MDIMDI 表單,可以同時開啟多個子表單,可以同時開啟多個子 MDIMDI表單,如下圖所示:表單,如下圖所示:

Page 24: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --建立父建立父 MDIMDI 表單表單

父父 MDIMDI 表單是子表單是子 MDIMDI 表單的容器表單,只表單的容器表單,只需將表單需將表單 Form1Form1的的【【 IsMDIContainerIsMDIContainer 】】屬性設為屬性設為【【 TrueTrue 】】,就可以將表單,就可以將表單Form1Form1 建立成父建立成父 MDIMDI 表單。表單。

Page 25: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --建立與開啟子建立與開啟子 MDIMDI 表單表單

子子 MDIMDI 表單是在父表單是在父 MDIMDI 表單中顯示的表單,表單中顯示的表單,在父表單需要使用程式碼來開啟子在父表單需要使用程式碼來開啟子 MDIMDI 表表單,使用的是單,使用的是 Show()Show() 方法,如下所示:方法,如下所示:Dim fc As Form2 = New Form2()Dim fc As Form2 = New Form2()

fc.MdiParent = Mefc.MdiParent = Me

fc.Show()fc.Show()

Page 26: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --取得擁有焦點的子取得擁有焦點的子 MDIMDI 表單物件表單物件

在同時開啟的多個子在同時開啟的多個子 MDIMDI 表單中,只能有表單中,只能有一個表單是作用中的表單,即取得焦點。一個表單是作用中的表單,即取得焦點。

在父在父 MDIMDI 表單物件可以使用表單物件可以使用ActiveMdiChildActiveMdiChild 屬性來取得是哪一個表單屬性來取得是哪一個表單物件,如下所示:物件,如下所示:Dim active As Form2 = Me.ActiveMdiChildDim active As Form2 = Me.ActiveMdiChild

If (Not active Is Nothing) ThenIf (Not active Is Nothing) Then

……… ………....

End IfEnd If

Page 27: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --子子 MDIMDI 表單取得父表單取得父 MDIMDI 表單物件表單物件

反過來看,對於作用中的子反過來看,對於作用中的子 MDIMDI 表單,如表單,如果需要呼叫父果需要呼叫父 MDIMDI 表單的方法,我們可以表單的方法,我們可以使用子使用子 MDIMDI 表單的表單的 MdiParentMdiParent 屬性取得父屬性取得父MDIMDI 表單,如下所示:表單,如下所示:Dim parent As Form1 = Me.MdiParentDim parent As Form1 = Me.MdiParent

parent.Search(txtSearch.Text)parent.Search(txtSearch.Text) 上述程式碼取得父上述程式碼取得父 MDIMDI 表單表單 Form1Form1 後,後,

呼叫呼叫 Search()Search() 方法。方法。

Page 28: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --排列子排列子 MDIMDI 表單表單

在父在父 MDIMDI 表單可能開啟多個子表單可能開啟多個子 MDIMDI 表單,表單,此時在父此時在父 MDIMDI 表單的功能表可以新增選項,表單的功能表可以新增選項,以便切換不同子表單的排列方式,如下所以便切換不同子表單的排列方式,如下所示:示:Me.LayoutMdi(MdiLayout.Cascade)Me.LayoutMdi(MdiLayout.Cascade)

上述程式碼使用上述程式碼使用 LayoutMdi()LayoutMdi() 方法排列子方法排列子表單,其參數是排列方式的表單,其參數是排列方式的 MdiLayoutMdiLayout 列列舉常數。舉常數。

Page 29: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --MdiLayoutMdiLayout 列舉常數列舉常數

MdiLayoutMdiLayout 列舉常數,如下表所示:列舉常數,如下表所示:常數 說明

MdiLayout.ArrangeIcons 依序排列子MDI子表單的圖示

MdiLayout.Cascade 以重疊方式排列子MDI表單MdiLayout.TileHorizontal 以水平方式排列子MDI表單

MdiLayout.TileVertical 以垂直方式排列子MDI表單

Page 30: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --貼上剪貼簿貼上剪貼簿

剪貼簿功能可以將子剪貼簿功能可以將子 MDIMDI 表單的文字方塊內表單的文字方塊內容剪下,然後貼到其他子容剪下,然後貼到其他子 MDIMDI 表單表單上。上。 Visual BasicVisual Basic 剪貼簿處理是剪貼簿處理是 ClipboardClipboard類別,可以使用類別,可以使用 SetDataObject()SetDataObject() 方法存入方法存入剪貼簿,如下所示:剪貼簿,如下所示:

Clipboard.SetDataObject( _Clipboard.SetDataObject( _

active.txtInput.SelectedText)active.txtInput.SelectedText) 上述程式碼將文字方塊選取的文字內容貼上上述程式碼將文字方塊選取的文字內容貼上剪貼簿。剪貼簿。

Page 31: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --貼上剪貼簿貼上剪貼簿

至於取出剪貼簿內容物件是使用至於取出剪貼簿內容物件是使用GetDataObject()GetDataObject() 方法,如下所示:方法,如下所示:

Dim ido As IDataObject = Dim ido As IDataObject = Clipboard.GetDataObject()Clipboard.GetDataObject()

程式碼取出剪貼簿內容的程式碼取出剪貼簿內容的 IDataObjectIDataObject 物件後,物件後,我們可以使用我們可以使用 IfIf條件檢查物件內容的資料格式,條件檢查物件內容的資料格式,如下所示:如下所示:

If ido.GetDataPresent(DataFormats.Text) ThenIf ido.GetDataPresent(DataFormats.Text) Then

active.txtInput.SelectedText = _active.txtInput.SelectedText = _

ido.GetData(DataFormats.Text).ToString()ido.GetData(DataFormats.Text).ToString()

End IfEnd If

Page 32: 第 12 章  建立多表單與模組的應用程式

12-4 12-4 建立多文件介面的應用程式建立多文件介面的應用程式 --圖例圖例

Page 33: 第 12 章  建立多表單與模組的應用程式

12-5 12-5 執行外部應用程式執行外部應用程式 -- 說明說明 WindowsWindows 作業系統是一種多工的作業系統,作業系統是一種多工的作業系統,

可以同時執行多個應用程式,例如:同時可以同時執行多個應用程式,例如:同時執行瀏覽程式執行瀏覽程式 Internet ExplorerInternet Explorer 瀏覽網瀏覽網頁或頁或 Outlook ExpressOutlook Express 收發電子郵件。收發電子郵件。

同樣的,使用同樣的,使用 Visual BasicVisual Basic 建立的應用程建立的應用程式,如果需要,可以在式,如果需要,可以在 Visual BasicVisual Basic 應用應用程式呼叫其他應用程式,以便同時執行相程式呼叫其他應用程式,以便同時執行相關工具程式,例如:記事本或小畫家。關工具程式,例如:記事本或小畫家。

Page 34: 第 12 章  建立多表單與模組的應用程式

12-5 12-5 執行外部應用程式執行外部應用程式 -Shell()-Shell() 函函數數

在在 Visual BasicVisual Basic 程式執行外部應用程式的程式執行外部應用程式的函數是函數是 Shell()Shell() 函數,如下所示:函數,如下所示:

progID = Shell( _progID = Shell( _

"C:\Windows\System32\notepad.exe", _"C:\Windows\System32\notepad.exe", _

AppWinStyle.NormalFocus)AppWinStyle.NormalFocus) 上述上述 Shell()Shell() 函數的第函數的第 11 個參數是應用程式個參數是應用程式

的完整路徑字串,可以省略執行檔的附檔的完整路徑字串,可以省略執行檔的附檔名名 .exe.exe ,第,第 22 個參數是開啟應用程式視窗個參數是開啟應用程式視窗的樣式,這是的樣式,這是 AppWinStyleAppWinStyle 列舉常數。列舉常數。

Page 35: 第 12 章  建立多表單與模組的應用程式

12-5 12-5 執行外部應用程式執行外部應用程式 - - AppWinStyleAppWinStyle 列舉常數列舉常數

AppWinStyleAppWinStyle 列舉常數,如下表所示:列舉常數,如下表所示:常數 說明

AppWinStyle.Hide 視窗為隱藏且取得焦點AppWinStyle.NormalFocus 以最近使用的尺寸與位置開啟視窗,且取得

焦點AppWinStyle.MinimizedFocus 以圖示顯示視窗,且取得焦點AppWinStyle.MaximizedFocus 以全螢幕顯示視窗,且取得焦點AppWinStyle.NormalNoFocus 以最近使用的尺寸與位置顯示視窗,而且視

窗保有焦點AppWinStyle.MinimizedNoFocus 以圖示顯示視窗,視窗保有焦點