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

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

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

  1. Utilisez une instruction Définir pour indiquer à Visual Basic la bibliothèque contenant la fonction, son nom dans cette bibliothèque, sa séquence appelante et comment convertir des chaînes lors de l’appel.

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

  3. Consultez la documentation de la fonction Windows que vous appelez pour trouver les noms et les valeurs des constantes utilisées. La plupart d’entre elles sont définies dans le fichier WinUser.h.

  4. Définissez les constantes nécessaires dans votre code. De nombreuses constantes Windows correspondent à des valeurs non signées 32 bits, et vous devez définir ces As UInteger.

  5. Appelez la fonction de manière habituelle. L’exemple suivant appelle la fonction Windows MessageBox, prenant 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 classe 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, UShortet SByte ne font pas partie de l’Indépendance linguistique et composants indépendants de la langue (CLS ), de sorte que le code conforme CLS ne peut pas consommer un composant qui les utilise.

    Important

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

    Important

    L’appel de l’API Windows nécessite une autorisation de code non managé, pouvant 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