APIを使用するためには、次の例のように宣言して下さい。

VBscript
set MessageBox=CreateObject("SfcMini.DynaCall")
MessageBox.Declare "user32","MessageBoxA"



Jscript
var MessageBox=WScript.CreateObject("SfcMini.DynaCall");
MessageBox.Declare("user32","MessageBoxA");



  • 引数の数や変数型の指定をする必要はありません。


上記のように宣言しておくと、以下のようにAPIが使用できるようになります。

VBscript
MessageBox 0,"ANSI String, vbOkOnly","SfcMini.DynaCall",vbOkOnly


Jscript
MessageBox(0,"ANSI String, vbOkOnly","SfcMini.DynaCall",0);


  • 引数の数や変数型を間違えないようにして下さい。間違った引数の数や異なる変数型の使用は予期しない結果を引き起こします。



 関数の戻り値を32ビット整数値として受け取ることが可能です。以下のVBscriptの例では、『OK』ボタンを押したときに『vbOK (=1)』が、『キャンセル』ボタンを押したときに『vbCancel (=2)』が『ret』に入力されます。

VBscript
ret=MessageBox(0,"Unicode , vbOkCancel","SfcMini.DynaCall",vbOkCancel)



サンプルコード

 user32.dllのMessageBoxを呼び出す例です。この例は、サンプルスクリプトとして添付されています。

VBscript
option explicit
dim MessageBox
set MessageBox=CreateObject("SfcMini.DynaCall")
MessageBox.Declare "user32","MessageBoxA"
call MessageBox(0,"ANSI String, vbOkOnly","SfcMini.DynaCall",vbOkOnly)
MessageBox.DeclareW "user32","MessageBoxW"
call MessageBox(0,"Unicode , vbOkCancel","SfcMini.DynaCall",vbOkCancel)








Jscript
var MessageBox=WScript.CreateObject("SfcMini.DynaCall");
MessageBox.Declare("user32","MessageBoxA");
MessageBox(0,"ANSI String, vbOkOnly","SfcMini.DynaCall",0);
MessageBox.DeclareW("user32","MessageBoxW");
MessageBox(0,"Unicode , vbOkCancel","SfcMini.DynaCall",1);






実行結果
ANSI String Unicode