Partager via


Comment : appeler une fonction Windows qui possède des types non signés

Mise à jour : novembre 2007

Si vous consommez une classe, un module ou une structure qui a des membres de types d'entiers non signés, vous pouvez accéder à ces membres avec Visual Basic.

Pour appeler une fonction Windows qui prend un type non signé

  1. Utilisez une Declare, instruction pour indiquer à Visual Basic quelle bibliothèque contient la fonction, quel est son nom dans cette bibliothèque, quelle est sa séquence d'appel et comment convertir des chaînes lors de son appel.

  2. Dans l'instruction Declare, utilisez UInteger, ULong, UShort ou Byte selon le cas pour chaque paramètre avec un type non signé.

  3. Pour déterminer les noms et les valeurs des constantes de la fonction Windows que vous appelez, consultez la documentation relative à cette fonction. Une grande partie de ces noms et valeurs sont définis dans le fichier WinUser.h.

  4. Déclarez les constantes nécessaires dans votre code. De nombreuses constantes Windows sont des valeurs non signées de 32 bits, que vous devez déclarer AsUInteger.

  5. Appelez la fonction de manière normale. L'exemple suivant appelle la fonction Windows MessageBox, qui prend un argument d'entier non signé.

    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
    

    Vous pouvez tester la fonction messageThroughWindows à l'aide du code suivant.

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

    Les types de données UInteger, ULong, UShort et SByte ne faisant pas partie de la Spécification CLS (Common Language Specification) (CLS), le code conforme CLS ne peut pas consommer un composant qui les utilise.

    Note de sécurité :

    Le fait d'appeler du code non managé, tel que l'interface de programmation d'application Windows (API), expose votre code à des problèmes de sécurité potentiels.

    Note de sécurité :

    L'appel de l'API Windows nécessite une autorisation de code non managée, qui peut affecter son exécution dans les situations d'un niveau de confiance partiel. Pour plus d'informations, consultez SecurityPermission et Autorisations d'accès du code.

Voir aussi

Tâches

Comment : optimiser le stockage d'entiers positifs avec les types non signés

Procédure pas à pas : appel des API Windows

Référence

Liste des types de données (Visual Basic)

Integer, type de données (Visual Basic)

UInteger, type de données

Declare, instruction