Share via


Como: Chamar uma função do Windows que leva os tipos não assinados

Se você está consumindo uma classe, módulo ou estrutura que tenha membros de tipos inteiro sem sinal, você pode acessar esses membros com Visual Basic.

Para telefonar uma função do Windows que leva um tipo não assinado

  1. Use um Instrução Declare para informar ao Visual Basic a biblioteca contém a função, nessa biblioteca seu nome é, o que é sua sequência de chamada e como converter cadeias de caracteres quando chamá-lo.

  2. No Declare demonstrativo, uso UInteger, ULong, UShort, ou Byte sistema autônomo apropriado para cada parâmetro com um tipo não assinado.

  3. Consulte a documentação para a função do Windows que você está chamando para localizar nomes e valores das constantes usa.Muitos deles são definidos no arquivo WinUser.h.

  4. Declare constantes necessárias em seu código.Many Windows constants are 32-bit unsigned values, and you should declare these AsUInteger.

  5. Chame a função da maneira normal.O exemplo a seguir chama a função de Windows MessageBox, que usa um argumento inteiro sem sinal.

    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
    

    Você pode testar a função messageThroughWindows com o código a seguir.

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

    O UInteger, ULong, UShort, e SByte os tipos de dados não são parte dos CLS (Common Language Specification) (CLS), para que o código compatível com CLS não pode consumir um componente que usa-los.

    Observação de segurança:

    Fazendo uma telefonar para código não gerenciado, sistema autônomo a interface de programação de aplicativo (API) do Windows expõe seu código para possíveis riscos de segurança.

    Observação de segurança:

    Chamando a API do Windows requer permissão do código não gerenciado, que poderá afetar sua execução em situações de confiança parcial.Para obter mais informações, consulte SecurityPermission e Permissões de acesso a código .

Consulte também

Tarefas

Como: Otimizar o armazenamento de números inteiros positivo com tipos não assinados

Demonstra Passo a passo: Chamando as APIs do Windows

Referência

Resumo de tipo de dados (Visual Basic)

Tipo de Dados Inteiro (Visual Basic)

Tipo de dados UInteger

Instrução Declare