DECLARE - DLL (Comando)

Registra una función en una biblioteca compartida externa. Las bibliotecas son archivos de biblioteca de vínculos dinámicos (.DLL) de 32 bits.

DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName]
   [cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...]

Parámetros

  • cFunctionType
    Indica el tipo de datos del valor devuelto desde la biblioteca compartida, si hay alguno. Si la función no devuelve un valor, omita cFunctionType.

    cFunctionType puede adoptar los valores siguientes:

    cFunctionType Descripción
    SHORT Entero de 16 bits
    INTEGER Entero de 32 bits
    SINGLE Coma flotante de 32 bits
    DOUBLE Coma flotante de 64 bits
    LONG Entero de 32 bits de longitud
    STRING Cadena de caracteres
    OBJECT Tipo de objeto IDispatch
  • FunctionName
    Especifica el nombre de la función de biblioteca compartida que se va a registrar en Visual FoxPro. Observe que FunctionName distingue mayúsculas y minúsculas.

    Nota   Un nombre de función DLL puede ser distinto del que se indica en el manual de la API de Win32. Por ejemplo, la función MessageBox podría llamarse MessageBoxA (para caracteres de un solo byte) y MessageBoxW (para UNICODE). Si Visual FoxPro no puede localizar la función DLL especificada con FunctionName, se agrega la letra A al final del nombre de función y Visual FoxPro vuelve a buscar la función con el nuevo nombre.

    Si la función de biblioteca compartida que ha especificado tiene el mismo nombre que una función de Visual FoxPro o no es un nombre permitido en Visual FoxPro, utilice la cláusula AS para asignar un alias a la función cuando la registre, tal y como se describe más adelante en este mismo tema.

    También puede utilizar OBJECT como valor de retorno, como en "DECLARE OBJECT myfunc IN some DLL ..." aunque COM, habitualmente, no tiene ninguna API con este formato. Por ejemplo:

    DECLARE INTEGER AccessibleObjectFromWindow IN oleacc.dll ;
    integer, integer, string , object @
    
  • IN LibraryName
    Especifica el nombre de la biblioteca compartida externa que contiene la función especificada con FunctionName.

    Si especifica WIN32API como LibraryName, Visual FoxPro busca la función .dll de Windows de 32 bits en Kernel32.dll, Gdi32.dll, User32.dll, Mpr.dll y Advapi32.dll.

  • AS AliasName
    Especifica un nombre de alias para un nombre de función de biblioteca compartida que tiene el mismo nombre que una función de Visual FoxPro o no es un nombre válido de Visual FoxPro. AliasName no debe ser una palabra reservada de Visual FoxPro o el nombre de una función de biblioteca compartida ya registrada con Visual FoxPro.

    Si le asigna un alias a la función, utilice el alias cuando llame a la función de biblioteca compartida. AliasName no distingue mayúsculas y minúsculas.

  • cParameterType1 [@] ParamName1, cParameterType2 [@] ParamName2, ...
    Especifica los tipos de parámetros pasados a la función de biblioteca compartida.

    El argumento cParameterType es necesario y especifica el tipo de datos para cualquier parámetro que la función de biblioteca compartida espera que se le pase. cParameterType puede ser uno de los siguientes tipos:

    cParameterType Descripción
    INTEGER Entero de 32 bits
    SINGLE Coma flotante de 32 bits
    DOUBLE Coma flotante de 64 bits
    LONG Entero de 32 bits de longitud
    STRING Cadena de caracteres

    Visual FoxPro genera un error si los parámetros son del tipo previsto por la función de biblioteca compartida. Los valores nulos se pueden transferir como cadenas de caracteres vacías.

    Para pasar un parámetro por referencia cuando se llama a la función, debe incluir @ después del parámetro cParameterType en este comando y antes de la variable correspondiente en la función que llama. Si no incluye @ en DECLARE, en la función que llama o en ambos, el parámetro se pasa por valor. Para obtener información acerca de funciones de biblioteca compartida que necesitan @ para pasar parámetros por referencia, vea el manual del programador para su entorno o sistema operativo (por ejemplo, consulte el Manual del programador de Win32 de Microsoft para obtener información acerca de cómo pasar parámetros a DLL de Windows).

    Nota   Los nombres de parámetros ParamName1, ParamName2, etc., son estrictamente opcionales y no los utiliza Visual FoxPro o la función de biblioteca compartida. Puede incluirlos para recordar los nombres y los tipos de parámetro que recibe la función.

Observaciones

Antes de llamar a una función de biblioteca compartida desde Visual FoxPro, debe ejecutar DECLARE con el nombre de la función, el nombre de la biblioteca compartida que contiene la función y los tipos de los parámetros que la función espera recibir.

Para proporcionar compatibilidad con versiones anteriores, Visual FoxPro permite llamadas a bibliotecas API externas mediante el comando SET LIBRARY. (Mediante SET LIBRARY, podrá tener acceso a funciones de Fooxtools.fll.) No obstante, se recomienda que utilice DECLARE para registrar funciones de bibliotecas compartidas.

Aunque Visual FoxPro agrega cFunctionType de OBJECT a este comando principalmente para dar soporte a algunas rutinas del API de accesibilidad de ActiveX, puede utilizarlo de forma genérica con otras rutinas de API de Windows.

Si desea obtener más información acerca de funciones de bibliotecas compartidas, vea el manual del programador para su entorno o sistema operativo (por ejemplo, consulte el Manual del programador de Win32 de Microsoft si desea información acerca de cómo puede llamar a archivos DLL).

Ejecute DISPLAY STATUS o LIST STATUS para mostrar los nombres de funciones registradas. Ejecute CLEAR ALL o CLEAR DLLS para eliminar de la memoria las funciones registradas.

Ejemplo

Este ejemplo para Windows devuelve el controlador de ventana para Visual FoxPro o cero si cambia a otra aplicación para Windows. Cuando se muestra la ventana WAIT, dispone de 5 segundos para presionar ALT+TAB con el fin de cambiar a otra aplicación distinta de Windows o puede dejar Visual FoxPro como la aplicación activa.

CLEAR
DECLARE INTEGER GetActiveWindow IN win32api
WAIT WINDOW "You can switch to another application now" TIMEOUT 5
? GetActiveWindow( )

Vea también

CALL | CLEAR | DISPLAY DLLS | DISPLAY STATUS | LIST DLLS | LOAD | SET LIBRARY