Sdílet prostřednictvím


Postupy: Volání funkce systému Windows, která přebírá nepřiřazené typy (Visual Basic).

Pokud používáte třídu, modul nebo strukturu, která obsahuje členy bez znaménka, můžete k těmto členům přistupovat pomocí jazyka Visual Basic.

Volání funkce Systému Windows, která přebírá nepodepsaný typ

  1. Příkaz Declare použijte k tomu, abyste sadě Visual Basic řekli, která knihovna obsahuje funkci, jaký je její název v této knihovně, jaká je její volající sekvence, a jak při volání převést řetězce.

  2. Declare V příkazu použijte UInteger, , ULongUShortnebo Byte podle potřeby pro každý parametr s nepodepsaným typem.

  3. Projděte si dokumentaci k funkci Windows, kterou voláte, a vyhledejte názvy a hodnoty konstant, které používá. Mnohé z nich jsou definovány v souboru WinUser.h.

  4. Deklarujte potřebné konstanty v kódu. Mnoho konstant Systému Windows je 32bitových nepodepsaných hodnot a měli byste je As UIntegerdeklarovat .

  5. Volejte funkci normálním způsobem. Následující příklad volá funkci MessageBoxSystému Windows, která přebírá celočíselné argumenty bez znaménka.

    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
    

    Funkci messageThroughWindows můžete otestovat pomocí následujícího kódu.

    Public Sub consumeWindowsMessage()
        Dim w As New windowsMessage
        w.messageThroughWindows()
    End Sub
    

    Upozornění

    UIntegerRozhraní CLS (Language Independence and Language-Independent Components) nejsou součástí datových typů , ULongUShortSByte takže kód kompatibilní se specifikací CLS nemůže využívat komponentu, která je používá.

    Důležité

    Volání nespravovaného kódu, například rozhraní API (Application Programming Interface) pro Windows, zpřístupňuje kód potenciálním bezpečnostním rizikům.

    Důležité

    Volání rozhraní API systému Windows vyžaduje nespravované oprávnění ke kódu, které může ovlivnit jeho spuštění v situacích s částečnou důvěryhodností. Další informace najdete v tématu SecurityPermission a oprávnění pro přístup ke kódu.

Viz také