分享方式:


如何:呼叫使用不帶正負號類型的 Windows 函式 (Visual Basic)

若您要取用具有不帶正負號之整數型別成員的類別、模組或結構,則可以使用 Visual Basic 存取這些成員。

呼叫採用不帶正負號類型的 Windows 函式

  1. 使用 Declare 陳述式來告訴 Visual Basic 哪些程式庫保存函式、其名稱在該程式庫中是什麼、其呼叫順序是什麼,以及如何在呼叫函式時轉換字串。

  2. Declare 陳述式中,針對具有不帶正負號類型的每個參數,使用 UIntegerULongUShortByte

  3. 若要尋找所使用常數的名稱與值,請參閱您所呼叫之 Windows 函式的文件。 其中許多常數的名稱與值會在 WinUser.h 檔案中定義。

  4. 在程式碼中宣告必要的常數。 許多 Windows 常數都是 32 位元不帶正負號的值,您應該宣告這些 As UInteger

  5. 以正常方式呼叫函式。 下列範例會呼叫採用不帶正負號之整數引數的 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
    

    警告

    UIntegerULongUShortSByte 資料類型不是語言獨立性以及與語言無關的元件 (CLS) 的一部分,因此 CLS 相容的程式碼無法取用使用這些資料類型的元件。

    重要

    呼叫非受控碼 (例如 Windows 應用程式開發介面 (API)) 會將您的程式碼公開給潛在的安全性風險。

    重要

    呼叫 Windows API 需要非受控碼權限,這可能會在部分信任的情況下影響其執行。 如需詳細資訊,請參閱 SecurityPermission程式碼存取權限

另請參閱