dll_obj = Load DLL("path" <, AutoDeclare(Boolean | Quiet | Verbose) |Quiet | Verbose > )
Load DLL() loads the DLL in the specified path. Use the AutoDeclare(Quiet) argument to suppress log window messaging.
Use the Declare Function message to declare a function that is defined in the DLL.After you declare the function, you can call it.
dll_obj <<Declare Function("name", Convention(named_argument), Alias("string"), Arg(type, "string"), Returns(type), other_named_arguments)
The Alias defines an alternate name that you can use in JSL. For example, if you declared Alias("MsgBox") for a function that is named "Message Box" in the DLL, then you would call it as follows:
result = dll_obj <<MsgBox(...)
The named arguments for Convention are as follows:
•
|
STDCALL or PASCAL
|
•
|
See Dynamic Link Libraries (DLLs) the JSL Syntax Reference for the Declare Function message arguments.
Finally, use the UnLoadDLL message to unload the DLL:
dll_obj << UnLoadDLL
If( Host is( "Windows" ),
If(
Host is( "Bits64" ),
// Load the 64-bit DLL.
dll_obj = Load DLL( "c:\Windows\System32\user32.dll" ),
// Load the 32-bit DLL.
dll_obj = Load DLL( "c:\Windows\SysWOW64\user32.dll" ),
// If neither DLL is found, stop execution.
Throw
);
dll_obj <<DeclareFunction(
"MessageBoxW",
Convention( STDCALL ),
Alias( "MsgBox" ),
Arg( IntPtr, "hWnd" ),
Arg( UnicodeString, "message" ),
Arg( UnicodeString, "caption" ),
Arg( UInt32, "uType" ),
Returns( Int32 )
);
result = dll_obj << MsgBox(
0,
"Here is a message from JMP.",
"Call DLL",
321
);
Show( result );
);
dll_obj << UnLoadDLL
dll_obj << Show Functions;
If you are writing your own DLL, you can create functions in it using JSL. The Get Declaration JSL message sends any JSL functions in your DLL to the log:
dll_obj << Get Declaration JSL;