<一般的な使用方法>


 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)

» サンプルコード

 一つのCOMオブジェクトで複数のAPI呼び出しを行うように設定することも可能です。まず次の例のようにしてDLLファイルのロードを指定してください。

VBScript
set API=CreateObject("SfcMini.DynaCall")
API.LoadLibraries "kernel32","user32"



JScript
var API=WScript.CreateObject("SfcMini.DynaCall");
API.LoadLibraries("kernel32","user32");




 上記の例では、『kernek32.dll』と『user32.dll』に含まれるAPIが使用可能になります。APIを利用する場合は、次の例のように記述してください。

VBScript
API.MessageBoxA 0,"ANSI String, vbOkOnly","SfcMini.DynaCall",vbOkOnly


JScript
API.MessageBoxA(0,"ANSI String, vbOkCancel","SfcMini.DynaCall",1);

 構造体は、例えばPOINTAPI構造体では次のように宣言します。

VBscript
Set pt=CreateObject("SfcMini.Structure")
pt _
  "x","Long", _
  "y","Long"





Jscript
var pt=WScript.CreateObject("SfcMini.Structure");
pt(
  "x","Long",
  "y","Long"
);






  • 使用できる変数型は、"Byte" "Integer" "Long" "String" "Unicode"で、Integerは2バイト整数型、Longは4バイト整数型、StringはANSI文字列です。
  • 要素が配列の時は、"objectHandle(1)"の様に10進法で指定してください。このとき、『(』『)』の前後にスペースを入れないでください。
  • 固定長文字列は、"String*256" "Unicode*128"の様に10進法で指定してください。このとき、『*』の前後にスペースを入れないでください。


上記のように宣言すると、『pt.x』 『pt.y』の2つのプロパティにアクセスすることが出来るようになります。また、『pt』をAPIの引数にすることが可能です。

 作成した構造体は、以下のようにしてコピーすることができます。

VBscript
Set pt2=CreateObject("SfcMini.Structure")
pt2()=pt



Jscript
var pt2=WScript.CreateObject("SfcMini.Structure");
pt2()=pt;


» サンプルコード

 SFC ver0.3でサポートしていた『'Begin Declaration』によるAPI及び構造体の宣言もほぼ同様に行えます。VBScriptの冒頭部分で、次のように記述してください。
VBScript
Dim SFC
Set SFC = CreateObject("SfcMini.tools")
Execute SFC.Initialize




 これで、以下に述べる『Win32APIの宣言』と『構造体の宣言』および、これらの使用が、SFC ver0.3と同じように可能になります。

Win32APIの宣言

 APIの宣言方法は、VB6と殆ど同じです。ただ、全く同じように宣言するとスクリプトを実行する際にエラーになりますので、『'』でコメントアウトします。さらに、通常のコメントと区別するために、宣言文を『'Begin Declaration』と『'End Declaration』で挟みます。つまり、以下の例のように記述してください。

VBScript
'Begin Declaration
'
'Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
'
'End Declaration






上記のように宣言しておくと、MessageBox関数が以下のように使用可能です。

VBScript
Call MessageBox(0, "Hello World!","MessageBox test", 0)


  • 『'Declare』宣言は、一行で書いてください。『_』を用いて2行以上にすることは出来ません。
  • 『Alias "XXXX"』は、宣言文によっては省略可能です。


構造体の宣言

 構造体の宣言も、VB6と同じように行えます。以下の例のように記述してください。

VBScript
'Begin Declaration
'
'Type POINTAPI
'  x as long
'  y as long
'End Type
'
'End Declaration









 構造体は、クラスとして登録されます。使用する際は、以下の例のように記述します。

VBScript
Dim pt
Set pt=new POINTAPI


» サンプルコード