AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de Windows / Funciones varias de Windows
  • Usando las variables de la API description
  • Propiedades específicas de las variables API description
  • Casos especiales
  • Funciones que utilizan las variables de la API description
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Un API description Variable se utiliza para describir un API, sus parámetros, su valor de retorno y sus opciones de llamada mediante programación.
Las características de este tipo se pueden definir y cambiar mediante diferentes propiedades WLanguage.
Observación: Para obtener más información sobre la declaración de este tipo de variable y el uso de propiedades WLanguage, consulte Declarar una variable.
Ejemplo
GetModuleHandle is API Description
GetModuleHandle.DLLName = "kernel32"
GetModuleHandle.FunctionName = "GetModuleHandleA"
GetModuleHandle.ReturnType = apiSystemInt
GetModuleHandle.Parameter[1].Type = apiAnsiString
// Call a fictitious DLL for calculating the distance between 2 points on the surface of the Earth
CalculateDistance is API Description
CalculateDistance.DLLName = "GEO.DLL"
CalculateDistance.FunctionName = "CalculateDistance"
CalculateDistance.Parameter[1].Type = apiReal_8
CalculateDistance.Parameter[2].Type = apiReal_8
CalculateDistance.Parameter[3].Type = apiReal_8
CalculateDistance.Parameter[4].Type = apiReal_8
CalculateDistance.ReturnType = apiReal_8
 
distance is real = CalculateDistance(Latitude1, Longitude1, Latitude2, Longitude2)
Observaciones

Usando las variables de la API description

Las variables API description pueden ser utilizadas:
  • directamente, especificando los valores de los diferentes parámetros si es necesario. Por ejemplo:
    GetModuleHandle is API Description
    GetModuleHandle.DLLName = "kernel32"
    GetModuleHandle.FunctionName = "GetModuleHandleA"
    GetModuleHandle.ReturnType = apiSystemInt
    GetModuleHandle.Parameter[1].Type = apiAnsiString
     
    // Direct use
    GetModuleHandle(Null)
  • con la función API. Por ejemplo:
    GetModuleHandle is API Description
    GetModuleHandle.DLLName = "kernel32"
    GetModuleHandle.FunctionName = "GetModuleHandleA"
    GetModuleHandle.ReturnType = apiSystemInt
    GetModuleHandle.Parameter[1].Type = apiAnsiString
     
    // Use of the API function
    API(GetModuleHandle, Null)

Propiedades específicas de las variables API description

Las siguientes propiedades pueden ser utilizadas para manipular y API description:
Nombre de la propiedadTipo utilizadoEfecto
AddressEntero del sistemaAddress de la función.
Si se asigna un valor a este Property, el FunctionName Property contiene la dirección de la función, el Number Property es set a -1 y el DLLName Property es set a "" (cadena vacía).
DLLNombreCadena de caracteresNombre DLL.
LlamadaConvenciónConstante de tipo IntegerMétodo para llamar a la DLL. Existen tres convenciones de llamada disponibles a través de las siguientes constantes:
  • CDECL
  • STDCALL
  • THISCALL
Nombre de la funciónCadena de caracteresNombre de la función que se encuentra en la DLL.
Si se especifica este Property, también debe especificarse el DLLName Property. En este caso, el valor de la propiedad Number es -1 y el de la propiedad Address es 0.
NúmeroIntegroNúmero de la función.
Si se especifica este Property, también debe especificarse el DLLName Property. En este caso, el NombreFunción Property contiene el número y el Address se pone a 0.
OpciónConstante de tipo IntegerOpciones para llamar a la API. Esta Property puede corresponder a una de las siguientes constantes:
  • apiLockThreads: Si se utiliza esta constante, la llamada a la API bloquea todos los hilos de rosca actuales.. Esto se utiliza para proteger el DLL externo de las llamadas multi-Thread.
  • apiFreeDLL: Si la DLL se cargó para llamar a la API, se descargará. Esta constante se ignora si la DLL ya estaba cargada durante la llamada a la API.
  • apiRestoreSystemSettings: Si se utiliza esta constante, los parámetros del sistema se restablecerán después de la llamada al API. De hecho, algunas APIs modifican los parámetros del sistema.
Las opciones predeterminadas son apiRestoreSystemSettings + apiFreeDLL.
paramétricoArrayLa propiedad Type de cada elemento del array indica el tipo de cada parámetro de la API. Esta propiedad puede corresponder a:
  • un nombre de estructura en forma de cadena si el parámetro es una estructura pasada como parámetro por valor,
  • una de las siguientes constantes:
    • apiBoolean: el parámetro es un booleano.
    • apiBuffer: el parámetro es un búfer.
    • apiCharacter: el parámetro es un carácter Ansi si el proyecto está en modo Ansi, el parámetro es un carácter Unicode si el proyecto está en modo Unicode.
    • apiAnsiCharacter: el parámetro es un carácter Ansi.
    • apiUnicodeCharacter: el parámetro es un carácter Unicode
    • apiString: el parámetro es una cadena de caracteres Ansi si el proyecto está en modo Ansi, el parámetro es una cadena de caracteres Unicode si el proyecto está en modo Unicode.
    • apiAnsiString: el parámetro es una cadena de caracteres Ansi.
    • apiUnicodeString: el parámetro es una cadena de caracteres Unicode.
    • apiInt_1: el parámetro es un entero de 1 byte.
    • apiInt_2: el parámetro es un entero de 2 bytes.
    • apiInt_4: el parámetro es un entero de 4 bytes.
    • apiInt_8: el parámetro es un entero de 8 bytes.
    • apiUnsignedInt_1: el parámetro es un entero de 1 byte sin signo.
    • apiUnsignedInt_2: el parámetro es un entero de 2 bytes sin signo.
    • apiUnsignedInt_4: el parámetro es un entero de 4 bytes sin signo.
    • apiUnsignedInt_8: el parámetro es un entero de 8 bytes sin signo.
    • apiSystemInt: el parámetro es un entero del sistema.
    • apiReal_4: el parámetro es un real de 4 bytes.
    • apiReal_8: el parámetro es un real de 8.- bytes
Tipo de devoluciónEntero o cadenaTipo devuelto por la API. Este Property corresponde a:
  • apiBoolean: el API devuelve un booleano.
  • apiBuffer: el API devuelve un buffer.
  • apiCharacter: el API devuelve un carácter Ansi si el proyecto está en modo Ansi, un carácter Unicode si el proyecto está en modo Unicode.
  • apiAnsiCharacter: el API devuelve un carácter Ansi.
  • apiUnicodeCharacter: el API devuelve un carácter Unicode.
  • apiString: el API devuelve una cadena de caracteres Ansi si el proyecto está en modo Ansi, una cadena de caracteres Unicode si el proyecto está en modo Unicode.
  • apiAnsiString: el API devuelve una cadena de caracteres Ansi.
  • apiUnicodeString: el API devuelve una cadena de caracteres Unicode.
    • apiInt_1: la API devuelve un entero de 1 byte.
    • apiInt_2: la API devuelve un entero de 2 bytes.
    • apiInt_4: el API devuelve un entero de 4 bytes.
    • apiInt_8: el API devuelve un entero de 8 bytes.
    • apiUnsignedInt_1: la API devuelve un entero de 1 byte.
    • apiUnsignedInt_2: la API devuelve un entero de 2 bytes.
    • apiUnsignedInt_4: el API devuelve un entero de 4 bytes.
    • apiUnsignedInt_8: el API devuelve un entero de 8 bytes. * apiSystemInt: el API devuelve un entero del sistema.
  • apiReal_4: el API devuelve un real de 4 bytes.
  • apiReal_8: el API devuelve un real de 8.- bytes

Casos especiales

  • Se debe declarar una API description Variable para cada función utilizada.
  • El DLL se carga una sola vez, y no por cada Variable.

Funciones que utilizan las variables de la API description

Las siguientes funciones pueden utilizarse para las variables manipular API description:
APIEjecuta una función que se encuentra en una DLL externa.
CallDLL32Ejecuta una función que se encuentra en una DLL externa.
Versión mínima requerida
  • Versión 16
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/01/2023

Señalar un error o enviar una sugerencia | Ayuda local