PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • 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/iPadApple WatchUniversal Windows 10 AppWindows Mobile
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).
Versions 18 et supérieures
ConventionAppel
Nouveauté 18
ConventionAppel
ConventionAppel
Constante de type EntierMéthode d'appel de la DLL. Trois conventions d'appel sont disponibles grâce aux constantes suivantes :
  • Versions 18 et supérieures
    CDECL
    Nouveauté 18
    CDECL
    CDECL
  • Versions 18 et supérieures
    STDCALL
    Nouveauté 18
    STDCALL
    STDCALL
  • Versions 18 et supérieures
    THISCALL
    Nouveauté 18
    THISCALL
    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.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.
      Windows Mobile le paramètre est toujours un caractère Unicode.
    • Versions 17 et supérieures
      apiCaractèreAnsi : le paramètre est un caractère Ansi.
      Nouveauté 17
      apiCaractèreAnsi : le paramètre est un caractère Ansi.
      apiCaractèreAnsi : le paramètre est un caractère Ansi.
    • Versions 17 et supérieures
      apiCaractèreUnicode : le paramètre est un caractère Unicode
      Nouveauté 17
      apiCaractèreUnicode : le paramètre est un caractère Unicode
      apiCaractèreUnicode : le paramètre est un caractère Unicode
    • apiChaîne : le paramètre est une chaîne de caractères.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.
      Windows Mobile le paramètre est toujours une chaîne de caractères 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_4 : le paramètre est un entier sur 4.
    • apiEntier_8 : le paramètre est un entier 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.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.
    Windows Mobile l'API renvoie toujours un caractère Unicode.
  • Versions 17 et supérieures
    apiCaractèreAnsi : l'API renvoie un caractère Ansi.
    Nouveauté 17
    apiCaractèreAnsi : l'API renvoie un caractère Ansi.
    apiCaractèreAnsi : l'API renvoie un caractère Ansi.
  • Versions 17 et supérieures
    apiCaractèreUnicode : l'API renvoie un caractère Unicode.
    Nouveauté 17
    apiCaractèreUnicode : l'API renvoie un caractère Unicode.
    apiCaractèreUnicode : l'API renvoie un caractère Unicode.
  • apiChaîne : l'API renvoie une chaîne de caractères.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.
    Windows Mobile le paramètre est toujours une chaîne de caractères 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_4 : l'API renvoie un entier sur 4.
  • apiEntier_8 : l'API renvoie un entier 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.

Remarque : Ces propriétés peuvent être utilisées avec une des deux syntaxes suivantes :
  • <Nom de la variable>..<Nom de la propriété>
  • <Nom de la variable>.<Nom de la propriété>

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 description d'API :
Versions 09 et supérieures
API
Nouveauté 09
API
API
Exécute une fonction présente dans une DLL externe.
Versions 09 et supérieures
AppelDLL32
Nouveauté 09
AppelDLL32
AppelDLL32
Exé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