Partager via


Guide pratique pour appeler une fonction Windows qui accepte des types non signés (Visual Basic)

Si vous consommez une classe, un module ou une structure qui a des membres de types 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 instruction Declare pour indiquer à Visual Basic quelle bibliothèque contient la fonction, quel est son nom dans cette bibliothèque, quelle est sa séquence d’appels et comment convertir des chaînes lors de son appel.

  2. Dans l’instruction Declare, utilisez UInteger, ULong, UShort ou Byte si nécessaire pour chaque paramètre avec un type non signé.

  3. Consultez la documentation de la fonction Windows que vous appelez pour rechercher les noms et les valeurs des constantes qu’il utilise. La plupart d’entre elles sont définies 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 32 bits et vous devez les déclarer As UInteger.

  5. Appelez la fonction de la façon normale. L’exemple suivant appelle la fonction MessageBoxWindows, qui prend un argument 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 avec le code suivant.

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

    Avertissement

    Les types de données UInteger, ULong, UShort et SByte ne font pas partie de l’indépendance du langage et des composants Language-Independent (CLS), si bien qu'un code conforme au CLS ne peut pas utiliser un composant qui les emploie.

    Importante

    L’appel à du code non managé, tel que l’interface de programmation d’applications Windows (API), expose votre code à des risques de sécurité potentiels.

    Importante

    L’appel de l’API Windows nécessite une autorisation de code non managée, ce qui peut affecter son exécution dans des situations de confiance partielle. Pour plus d’informations, consultez SecurityPermission et autorisations d’accès au code.

Voir aussi