The script engine can import procedure and functions from external DLL files. Thus, you can extend your publication by calling your own DLL functions.
This is done thanks to the external keyword.
function functionName(arguments): resultType; [callingConvention]; external "libName.dll" [name 'ExternalFunctionName'];
For example, the following declaration:
function MyFunction(arg: integer): integer; external 'CustomLib.dll';
imports a function called MyFunction from CustomLib.dll. Default calling convention, if not specified, is register.
HEScript allows to declare a different calling convention (stdcall, register, pascal, cdecl or safecall) and to use a different name for the DLL function, like the following declaration:
function MsgBox(hWnd: Pointer; lpText, lpCaption: String; uType: Cardinal): Integer; stdcall; external "user32.dll" name 'MessageBoxW';
This imports ‘MessageBoxW’ function from User32.dll (Windows API library), named ‘MsgBox’ to be used in script, like:
procedure TestDLL; var S: String; begin S := InputBox("What do you want to show?", "Query", ""); MsgBox(0, S, "You entered:", MB_OK+MB_ICONINFORMATION); end;
Pointer and out parameters are not handled by the script engine.
Copyright G.D.G. Software 2019. All rights reserved