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 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é
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.
Dans l'instruction Declare, utilisez UInteger, ULong, UShort ou Byte selon le cas pour chaque paramètre avec un type non signé.
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.
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.
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 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
Procédure pas à pas : appel des API Windows (Visual Basic)
Référence
Liste des types de données (Visual Basic)