|
|
|
|
|
- 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
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. 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 |
---|
Adresse | Entier système | Adresse 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). | ConventionAppel | Constante de type Entier | Méthode d'appel de la DLL. Trois conventions d'appel sont disponibles grâce aux constantes suivantes : | NomDLL | Chaîne de caractères | Nom de la DLL. | NomFonction | Chaîne de caractères | Nom 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éro | Entier | Numé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. | Option | Constante de type Entier | Options 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ètre | Tableau | La 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.
| TypeRetour | Entier ou chaîne | Type 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 :
| | API | Exécute une fonction présente dans une DLL externe. | AppelDLL32 | Exécute une fonction présente dans une DLL externe. |
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|