Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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é
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.
Dans l’instruction
Declare
, utilisezUInteger
,ULong
,UShort
ouByte
si nécessaire pour chaque paramètre avec un type non signé.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.
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
.Appelez la fonction de la façon normale. L’exemple suivant appelle la fonction
MessageBox
Windows, 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
etSByte
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.