If the functionality you require is available in a DLL, you can link to the library and call its functions. Before calling a DLL function, you must determine its calling protocol, including the name of the function, the number and data types of its parameters, and the data type of its return value.
In Visual FoxPro, you can only use DLLs that have been written for a 32-bit environment. However, if you require access to a 16-bit DLL, you can call it using functions available in Foxtools.fll. For details, see Help for Foxtools (Foxtools.chm).
To call a DLL function
Register the DLL function using the DECLARE - DLL Command. Function names are case-sensitive.
Note: If you specify WIN32API for the library name, Visual FoxPro searches for the 32-bit Windows DLL function in Kernel32.dll, Gdi32.dll, User32.dll, Mpr.dll, and Advapi32.dll.
Call the function as you would any Visual FoxPro function.
For example, the following program registers the GetActiveWindow(В ) function from the Windows USER system DLL, which displays the handle of the Visual FoxPro main window. The GetActiveWindow(В ) takes no parameters, but returns a single integer:
DECLARE INTEGER GetActiveWindow IN win32api MESSAGEBOX(STR( GetActiveWindow() ) )
The DLL containing the function you're registering must be available in the default directory, in the Windows or System directories, or along the DOS path.
If the function you want to call has the same name as another function already available in Visual FoxPro (either a native function or a DLL function previously declared), you can assign an alias to the function with the duplicate name, then call it using the alias.
DECLARE INTEGER GetActiveWindow IN win32api AS GetWinHndl MESSAGEBOX(STR( GetWinHndl() ) )
Linked DLL functions remain available until you quit Visual FoxPro, so you only need to declare them once per session. If you don't intend to call the functions in a DLL again, you can issue the CLEAR DLLS command to remove it from memory and free resources.
|Issuing CLEAR DLLS clears all declared DLL functions from memory.|