Older Newer
Mon, 27 Dec 2021 08:42:58 . . . . SyneRyder [Improved example]


Changes by last author:

Added:
= freeLib =

Requires FM 1.0 Beta 9.0 (April 2008) or newer

== Syntax ==

int freeLib(void *handle)

== Arguments ==

:handle

::Handle (as obtained from loadLib) to the DLL to be freed.

== Returns ==

Returns a non-zero value (ie true) if the library was freed successfully, or zero / false if the function failed.

== Description ==

Frees a DLL from memory. Behind the scenes, this function is just a wrapper around the [FreeLibrary] Win32 API function.

== Example ==

<code>

// This code loads the user32.dll

// DLL included with Windows and

// uses it to display a YES/NO

// Message Box.

int* lib_user32;

int* functionPointer;

int returnval;

// Load the DLL library

lib_user32 = loadLib("user32");

if (lib_user32) {

// Get the function in the DLL

functionPointer = getLibFn(lib_user32, "MessageBoxA");

if (functionPointer) {

// Call the function

strcpy(str0, "The window text is here");

strcpy(str1, "Caption Text");

returnval = callLib(functionPointer, NULL, str0, str1, MB_YESNO);

// Process return value

if (returnval == IDYES)

msgBox(MB_OK, "Yes!", "Yes was clicked");

if (returnval == IDNO)

msgBox(MB_OK, "No :(", "No was clicked");

}

else msgBox(MB_OK, "Error", "Function wasn't loaded");

// Free the library DLL

freeLib(lib_user32);

}

else msgBox(MB_OK, "Error", "DLL was not loaded");

</code>

== See Also ==

loadLib, getLibFn, callLib

== Comments ==

:Everyone can add their comments about their experiences with this function here. Tips for using it are welcome, too.