DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion de Windows / Fonctions diverses Windows
  • Utilisation des variables de type Description d'API
  • Propriétés spécifiques à la description des variables de type Description d'API
  • Cas particuliers
  • Fonctions utilisant les variables de type Description d'API
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Description d'API (Type de variable)
En anglais : API description
Une variable de type Description d'API permet de décrire par programmation une API, ses paramètres, sa valeur de retour et ses options d'appel.
Les caractéristiques de ce type peuvent être définies et modifiées à l'aide de différentes propriétés WLangage.
Remarque : Pour plus de détails sur la déclaration de ce type de variable et l'utilisation des propriétés WLangage, consultez Déclaration d'une variable.
Exemple
GetModuleHandle est une Description d'API
GetModuleHandle.NomDLL = "kernel32"
GetModuleHandle.NomFonction = "GetModuleHandleA"
GetModuleHandle.TypeRetour = apiEntierSystème
GetModuleHandle.Paramètre[1].Type = apiChaîneAnsi
// Appel d'une DLL fictive de calcul de distance entre deux points à la surface de la Terre
CalculeDistance est une Description d'API
CalculeDistance.NomDLL = "GEO.DLL"
CalculeDistance.NomFonction = "CalculeDistance"
CalculeDistance.Paramètre[1].Type = apiRéel_8
CalculeDistance.Paramètre[2].Type = apiRéel_8
CalculeDistance.Paramètre[3].Type = apiRéel_8
CalculeDistance.Paramètre[4].Type = apiRéel_8
CalculeDistance.TypeRetour = apiRéel_8
 
distance est un réel = CalculeDistance(Latitude1, Longitude1, Latitude2, Longitude2)
Remarques

Utilisation des variables de type Description d'API

Les variables de type Description d'API peuvent être utilisées :
  • directement, en spécifiant les valeurs des différents paramètres si nécessaire. Par exemple :
    GetModuleHandle est une Description d'API
    GetModuleHandle.NomDLL = "kernel32"
    GetModuleHandle.NomFonction = "GetModuleHandleA"
    GetModuleHandle.TypeRetour = apiEntierSystème
    GetModuleHandle.Paramètre[1].Type = apiChaîneAnsi
     
    // Utilisation directe
    GetModuleHandle(Null)
  • avec la fonction API. Par exemple :
    GetModuleHandle est une Description d'API
    GetModuleHandle.NomDLL = "kernel32"
    GetModuleHandle.NomFonction = "GetModuleHandleA"
    GetModuleHandle.TypeRetour = apiEntierSystème
    GetModuleHandle.Paramètre[1].Type = apiChaîneAnsi
     
    // Utilisation de la fonction API
    API(GetModuleHandle, Null)

Propriétés spécifiques à la description des variables de type Description d'API

Les propriétés suivantes peuvent être utilisées pour manipuler une Description d'API :
Nom de la propriétéType manipuléEffet
AdresseEntier systèmeAdresse de la fonction.
Si cette propriété est renseignée, la propriété NomFonction contient l'adresse de la fonction, la propriété Numéro vaut -1 et la propriété NomDLL vaut "" (chaîne vide).
ConventionAppelConstante de type EntierMéthode d'appel de la DLL. Trois conventions d'appel sont disponibles grâce aux constantes suivantes :
  • CDECL
  • STDCALL
  • THISCALL
NomDLLChaîne de caractèresNom de la DLL.
NomFonctionChaîne de caractèresNom de la fonction présente dans la DLL.
Si cette propriété est renseignée, il est nécessaire de renseigner également la propriété NomDLL. Dans ce cas, la propriété Numéro vaut -1 et la propriété Adresse vaut 0.
NuméroEntierNuméro de la fonction.
Si cette propriété est renseignée, il est nécessaire de renseigner également la propriété NomDLL. Dans ce cas, la propriété NomFonction contient le numéro et la propriété Adresse est remise à 0.
OptionConstante de type EntierOptions d'appel de l'API. Cette propriété peut correspondre à une des constantes suivantes :
  • apiBloqueThreads : Si cette constante est utilisée, l'appel de l'API bloque tous les threads en cours. Cela permet de protéger la DLL externe des appels multi-threads.
  • apiDéchargeDLL : Si la DLL a été chargée pour appeler l'API, elle sera déchargée. Si la DLL était déjà chargée lors de l'appel de l'API, cette constante est ignorée.
  • apiRestaureParamètresSystème : Si cette constante est utilisée, les paramètres système sont restaurés après l'appel de l'API. En effet, certaines API modifient les paramètres système.
Les options par défaut sont apiRestaureParamètreSystème + apiDéchargeDLL.
ParamètreTableauLa propriété Type de chaque élément du tableau permet d'indiquer le type de chaque paramètre de l'API. Cette propriété peut correspondre à :
  • un nom de structure sous forme de chaîne si le paramètre est une structure passée en paramètre par valeur,
  • une des constantes suivantes :
    • apiBooléen : le paramètre est un booléen.
    • apiBuffer : le paramètre est un buffer.
    • apiCaractère : le paramètre est un caractère Ansi si le projet est en mode Ansi, le paramètre est un caractère Unicode si le projet est en mode Unicode.
    • apiCaractèreAnsi : le paramètre est un caractère Ansi.
    • apiCaractèreUnicode : le paramètre est un caractère Unicode
    • apiChaîne : le paramètre est une chaîne de caractères Ansi si le projet est en mode Ansi, le paramètre est une chaîne de caractères Unicode si le projet est en mode Unicode.
    • apiChaîneAnsi : le paramètre est une chaîne de caractères Ansi.
    • apiChaîneUnicode : le paramètre est une chaîne de caractères Unicode.
    • apiEntier_1 : le paramètre est un entier sur 1.
    • apiEntier_2 : le paramètre est un entier sur 2.
    • apiEntier_4 : le paramètre est un entier sur 4.
    • apiEntier_8 : le paramètre est un entier sur 8.
    • apiEntierSansSigne_1 : le paramètre est un entier sans signe sur 1.
    • apiEntierSansSigne_2 : le paramètre est un entier sans signe sur 2.
    • apiEntierSansSigne_4 : le paramètre est un entier sans signe sur 4.
    • apiEntierSansSigne_8 : le paramètre est un entier sans signe sur 8.
    • apiEntierSystème : le paramètre est un entier système.
    • apiRéel_4 : le paramètre est un réel sur 4.
    • apiRéel_8 : le paramètre est un réel sur 8.
TypeRetourEntier ou chaîneType retourné par l'API. Cette propriété correspond à :
  • apiBooléen : l'API renvoie un booléen.
  • apiBuffer : l'API renvoie un buffer.
  • apiCaractère : l'API renvoie un caractère Ansi si le projet est en mode Ansi, un caractère Unicode si le projet est en mode Unicode.
  • apiCaractèreAnsi : l'API renvoie un caractère Ansi.
  • apiCaractèreUnicode : l'API renvoie un caractère Unicode.
  • apiChaîne : l'API renvoie une chaîne de caractères Ansi si le projet est en mode Ansi, une chaîne de caractères Unicode si le projet est en mode Unicode.
  • apiChaîneAnsi : l'API renvoie une chaîne de caractères Ansi.
  • apiChaîneUnicode : l'API renvoie une chaîne de caractères Unicode.
    • apiEntier_1 : l'API renvoie un entier sur 1.
    • apiEntier_2 : l'API renvoie un entier sur 2.
    • apiEntier_4 : l'API renvoie un entier sur 4.
    • apiEntier_8 : l'API renvoie un entier sur 8.
    • apiEntierSansSigne_1 : l'API renvoie un entier sans signe sur 1.
    • apiEntierSansSigne_2 : l'API renvoie un entier sans signe sur 2.
    • apiEntierSansSigne_4 : l'API renvoie un entier sans signe sur 4.
    • apiEntierSansSigne_8 : l'API renvoie un entier sans signe sur 8. * apiEntierSystème : l'API renvoie un entier système.
  • apiRéel_4 : l'API renvoie un réel sur 4.
  • apiRéel_8 : l'API renvoie un réel sur 8.

Cas particuliers

  • Il est nécessaire de déclarer une variable de type Description d'API par fonction utilisée.
  • La DLL est chargée une seule fois, et non pas pour chaque variable.

Fonctions utilisant les variables de type Description d'API

Les fonctions suivantes peuvent être utilisées pour manipuler une variable de type Description d'API :
APIExécute une fonction présente dans une DLL externe.
AppelDLL32Exécute une fonction présente dans une DLL externe.
Version minimum requise
  • Version 16
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale