Compartilhar via


Como: Chamar uma função do Windows que obtém tipos sem-sinal (Visual Basic)

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

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

  1. Use um Instrução Declare para informar ao Visual Basic que a biblioteca mantém a função, qual é seu nome nessa biblioteca, o que é sua sequência de chamada e como converter seqüências de caracteres ao chamar o proprietário.

  2. No Declare demonstrativo, use UInteger, ULong, UShort, ou Byte conforme 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 os nomes e os valores das constantes que ele usa. Muitos deles são definidos no arquivo WINUSER. H.

  4. Declare constantes necessárias em seu código. Muitos constantes do Windows são de 32 bits de-unsigned valores e você deve declarar essas As UInteger.

  5. Chame a função da maneira normal. O exemplo a seguir chama a funçãodo WindowsMessageBox, que leva umargumentode inteironão assinado de.

    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 teste a função messageThroughWindows com o código a seguir.

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

    Aviso

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

    Observação de segurançaObservação sobre segurança

    Fazendo uma chamada para o código não gerenciado, como o Windows aplicativo programming interface (API) expõe o seu código para possíveis riscos de segurança .

    Observação de segurançaObservação sobre segurança

    Chamar a API do Windows requer o código não gerenciado permissão, que pode afetar sua execução no parcial-situações de confiança. For more information, see SecurityPermission and Permissões de acesso de código.

Consulte também

Tarefas

Como: otimizar o armazenamento de inteiros positivos com tipos sem-sinal (Visual Basic)

Passo a passo: Chamando APIs do Windows (Visual Basic)

Referência

Resumo de tipo de dados (Visual Basic)

Tipo de Dados Inteiro (Visual Basic)

Tipo de dados UInteger

Instrução Declare