dll_obj = Load DLL("path" <, AutoDeclare(Boolean | Quiet | Verbose) |Quiet | Verbose > )
dll_obj <<Declare Function("name", Convention(named_argument), Alias("string"), Arg(type, "string"), Returns(type), other_named_arguments)
Aliasは、JSLで使用できる代替の名前を定義します。たとえば、DLL内の"Message Box"という関数に対して、Alias("MsgBox")を宣言した場合、その関数を次のようにも呼び出せるようになります。
result = dll_obj <<MsgBox(...)
Conventionの引数には、次のいずれかを指定します。
•
|
STDCALLまたはPASCAL
|
•
|
ArgとReturnsのtype引数には次のいずれかを指定します。
Declare Functionメッセージの引数については、『スクリプト構文リファレンス』の「JSLメッセージ」章を参照してください。
最後に、UnLoadDLLメッセージでDLLをアンロードします。
dll_obj << UnLoadDLL
メモ: 関数を宣言するときは、DLLの作成者によって提供された関数のマニュアルを参照してください。引数の種類や呼び出し方法がDLL内の実際の関数に合わない場合、JMPが終了してしまう可能性があります。
If( Host is( "Windows" ),
If(
Host is( "Bits64" ),
// 64ビットDLLをロードする。
dll_obj = Load DLL( "c:\Windows\System32\user32.dll" ),
// 32ビットDLLをロードする。
dll_obj = Load DLL( "c:\Windows\SysWOW64\user32.dll" ),
// どちらのDLLも見つからない場合は実行を停止する
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,
"JMPからのメッセージです。",
"DLLの呼び出し",
321
);
Show( result );
);
dll_obj << UnLoadDLL
dll_obj << Show Functions;
独自のDLLを作成するときには、DLL内にJSLの関数宣言スクリプトを用意しておくことができます。Get Declaration JSLメッセージは、DLL内の関数宣言スクリプトをログに送ります。
dll_obj << Get Declaration JSL;