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




サンプルコード

 『'Begin Declaration』を用いてGetOpenFileName及びOPENFILENAMEを宣言して用いる例です。
VBScript
option explicit
Dim SFC
Set SFC = CreateObject("SfcMini.tools")
Execute SFC.Initialize

'Begin Declaration
'
'Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
'
'Type OPENFILENAME
'        lStructSize As Long
'        hwndOwner As Long
'        hInstance As Long
'        lpstrFilter As String
'        lpstrCustomFilter As String
'        nMaxCustFilter As Long
'        nFilterIndex As Long
'        lpstrFile As String
'        nMaxFile As Long
'        lpstrFileTitle As String
'        nMaxFileTitle As Long
'        lpstrInitialDir As String
'        lpstrTitle As String
'        flags As Long
'        nFileOffset As Integer
'        nFileExtension As Integer
'        lpstrDefExt As String
'        lCustData As Long
'        lpfnHook As Long
'        lpTemplateName As String
'End Type
'
'End Declaration

Dim OpenFile
Set OpenFile=New OPENFILENAME

OpenFile.lpstrInitialDir = "C:\"
OpenFile.lStructSize = OpenFile.Length
OpenFile.hwndOwner = 0
OpenFile.lpstrFilter = "*.*"+chr(0)+"*.*"+chr(0)+chr(0)
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = "テスト.txt" + String(256, 0)
OpenFile.nMaxFile = 256
OpenFile.lpstrDefExt = ""
OpenFile.lpstrTitle = "Open File"
OpenFile.flags = 4 '//hide "Read Only" checkbox

Call GetOpenFileName(OpenFile)
msgbox OpenFile.lpstrFile