如何:呼叫使用不帶正負號類型的 Windows 函式 (Visual Basic)
若您要取用具有不帶正負號之整數型別成員的類別、模組或結構,則可以使用 Visual Basic 存取這些成員。
呼叫採用不帶正負號類型的 Windows 函式
使用 Declare 陳述式來告訴 Visual Basic 哪些程式庫保存函式、其名稱在該程式庫中是什麼、其呼叫順序是什麼,以及如何在呼叫函式時轉換字串。
在
Declare
陳述式中,針對具有不帶正負號類型的每個參數,使用UInteger
、ULong
、UShort
或Byte
。若要尋找所使用常數的名稱與值,請參閱您所呼叫之 Windows 函式的文件。 其中許多常數的名稱與值會在 WinUser.h 檔案中定義。
在程式碼中宣告必要的常數。 許多 Windows 常數都是 32 位元不帶正負號的值,您應該宣告這些
As UInteger
。以正常方式呼叫函式。 下列範例會呼叫採用不帶正負號之整數引數的 Windows 函式
MessageBox
。Public Class windowsMessage Private Declare Auto Function mb Lib "user32.dll" Alias "MessageBox" ( ByVal hWnd As Integer, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As UInteger) As Integer Private Const MB_OK As UInteger = 0 Private Const MB_ICONEXCLAMATION As UInteger = &H30 Private Const IDOK As UInteger = 1 Private Const IDCLOSE As UInteger = 8 Private Const c As UInteger = MB_OK Or MB_ICONEXCLAMATION Public Function messageThroughWindows() As String Dim r As Integer = mb(0, "Click OK if you see this!", "Windows API call", c) Dim s As String = "Windows API MessageBox returned " & CStr(r)& vbCrLf & "(IDOK = " & CStr(IDOK) & ", IDCLOSE = " & CStr(IDCLOSE) & ")" Return s End Function End Class
您能以下列程式碼取代函式
messageThroughWindows
。Public Sub consumeWindowsMessage() Dim w As New windowsMessage w.messageThroughWindows() End Sub
警告
UInteger
、ULong
、UShort
與SByte
資料類型不是語言獨立性以及與語言無關的元件 (CLS) 的一部分,因此 CLS 相容的程式碼無法取用使用這些資料類型的元件。重要
呼叫非受控碼 (例如 Windows 應用程式開發介面 (API)) 會將您的程式碼公開給潛在的安全性風險。
重要
呼叫 Windows API 需要非受控碼權限,這可能會在部分信任的情況下影響其執行。 如需詳細資訊,請參閱 SecurityPermission 與程式碼存取權限。