每個 Visual Basic 應(yīng)用程序均必須包含一個稱為VB.NET Main過程。該過程為應(yīng)用程序的起始點(diǎn)并為應(yīng)用程序提供總體控制。.NET Framework 在已加載應(yīng)用程序并準(zhǔn)備將控制傳遞給它時,將調(diào)用 Main 過程。除非您要創(chuàng)建 Windows 窗體應(yīng)用程序,否則就必須為自運(yùn)行的應(yīng)用程序編寫 Main 過程。
超過10多年行業(yè)經(jīng)驗(yàn),技術(shù)領(lǐng)先,服務(wù)至上的經(jīng)營模式,全靠網(wǎng)絡(luò)和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務(wù)范圍包括了:成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),成都網(wǎng)站推廣,成都網(wǎng)站優(yōu)化,整體網(wǎng)絡(luò)托管,小程序制作,微信開發(fā),成都App制作,同時也可以讓客戶的網(wǎng)站和網(wǎng)絡(luò)營銷和我們一樣獲得訂單和生意!
Main 中包含首先運(yùn)行的代碼。在 Main 中,可以確定在程序啟動時首先加載的窗體,確定系統(tǒng)上是否已在運(yùn)行您的應(yīng)用程序副本,為應(yīng)用程序建立一組變量,或者打開應(yīng)用程序需要的數(shù)據(jù)庫。
VB.NET Main過程的要求
獨(dú)立運(yùn)行的文件(擴(kuò)展名通常為 .exe)必須包含 Main 過程。庫(例如,擴(kuò)展名為 .dll)不獨(dú)立運(yùn)行,因而不需要 Main 過程??梢詣?chuàng)建的不同類型的項(xiàng)目的要求如下:
控制臺應(yīng)用程序可以獨(dú)立運(yùn)行,而且您必須提供至少一個 Main 過程。
Windows 窗體應(yīng)用程序可以獨(dú)立運(yùn)行。但是,Visual Basic 編譯器會在此類應(yīng)用程序中自動生成一個 Main 過程,因而您不需要編寫此過程。
類庫不需要 Main 過程。這些類庫包括 Windows 控件庫和 Web 控件庫。作為類庫部署 Web 應(yīng)用程序。
聲明VB.NET Main過程
有四種方法可以聲明 Main 過程。它可以使用參數(shù)或不使用參數(shù),可以返回值或不返回值。
注意
如果在類中聲明 Main 過程,則必須使用 Shared 關(guān)鍵字。在模塊中,Main 不必是 Shared。
最簡單的方法是聲明一個不使用參數(shù)或不返回值的 Sub 過程。
Module mainModule
Sub Main()
MsgBox("The Main procedure
is starting the application.")
' Insert call to appropriate
starting place in your code.
MsgBox("The application
is terminating.")
End Sub
End ModuleMain
還可以返回一個 Integer 值,操作系統(tǒng)將其作為程序的退出代碼。其他程序可以通過檢查 Windows ERRORLEVEL 值來測試該代碼。若要返回退出代碼,必須將VB.NET Main過程聲明為 Function 過程而不是 Sub 過程。
Module mainModule
Function Main() As Integer
MsgBox("The Main procedure
is starting the application.")
Dim returnValue As Integer = 0
' Insert call to appropriate
starting place in your code.
' On return, assign appropriate
value to returnValue.
' 0 usually means successful
completion.
MsgBox("The application is
terminating with error level " _
CStr(returnValue) ".")
Return returnValue
End Function
End ModuleMain
還可以采用一個 String 數(shù)組作為參數(shù)。數(shù)組中的每個字符串均包含一個用于調(diào)用程序的命令行參數(shù)。您可以根據(jù)它們的值采取不同的操作。
Module mainModule
Function Main(ByVal cmdArgs()
As String) As Integer
MsgBox("The Main procedure is
starting the application.")
Dim returnValue As Integer = 0
' See if there are any arguments.
If cmdArgs.Length 0 Then
For argNum As Integer = 0 To
UBound(cmdArgs, 1)
' Insert code to examine cmdArgs
(argNum) and take
' appropriate action based on its value.
Next argNum
End If
' Insert call to appropriate starting
place in your code.
' On return, assign appropriate
value to returnValue.
' 0 usually means successful completion.
MsgBox("The application is
terminating with error level " _
CStr(returnValue) ".")
Return returnValue
End Function
End Module
可以聲明VB.NET Main過程來檢查命令行參數(shù)而不返回退出代碼,如下所示。
Module mainModule
Sub Main(ByVal cmdArgs() As String)
MsgBox("The Main procedure is
starting the application.")
Dim returnValue As Integer = 0
' See if there are any arguments.
If cmdArgs.Length 0 Then
For argNum As Integer = 0 To
UBound(cmdArgs, 1)
' Insert code to examine cmdArgs
(argNum) and take
' appropriate action based on its value.
Next argNum
End If
' Insert call to appropriate
starting place in your code.
MsgBox("The application is
terminating."
End Sub
End Module
Declare?Function?FindWindow?Lib?"user32"?Alias?"FindWindowA"?
(ByVal?lpClassName?As?String,?ByVal?lpWindowName?As?String)?As?Int32
Declare?Function?GetWindowThreadProcessId?Lib?"user32"?Alias?
"GetWindowThreadProcessId"?(ByVal?hwnd?As?Int32,?lpdwProcessId?As?Int32)?As?
Int32
跟 VB6 里的聲明沒什么區(qū)別,只不過 Long 要變成 Int32 而已。
user32.dll 是 Windows 用戶界面相關(guān)應(yīng)用程序接口,用于包括 Windows 處理,基本用戶界面等特性,如創(chuàng)建窗口和發(fā)送消息。所以和這些相關(guān)的 API 都封裝在這里。但并不是所有的接口都對用戶開放了,只開放了部分,也就是在編程中能調(diào)用的 API,所以要查看起來的話不容易。
第一個相當(dāng)于 aa 就是Object的方法返回的那個實(shí)例。
第二個是實(shí)例化一個Object2類。
有些類的一些方法會返回一個結(jié)構(gòu)或者什么類。那么可以用第一種方法,將 aa 做為對這個返回實(shí)例的引用。
第二種方法,是通過調(diào)用類或結(jié)構(gòu)的初始化函數(shù)Sub New來實(shí)例化的。
哎,表達(dá)能力有限,也不曉得你明白了沒。