DLL(API等)の関数を使用する事ができるようになります。64bitの DLLは呼び出せません。
- 構文
- DEF_DLL 関数名( 型, 型, ... ): 戻り型: DLL名
- 引数
- 型
- int
- long
- bool
- uint
- hwnd
- string
- Wstring
- float
- double
- word
- dword
- byte
- char
- pchar
- Wchar
- pWchar
- boolean
- longlong
- SafeArray
- 戻り値
参照引数(値変更あり)の場合は Var 宣言を付ける
関数名(Var double, Var int)
構造体:型を { } にて展開して書く
関数名(double, {int, int, int})
配列の場合は型に [] を付ける
関数名(double[], int[])
※int=long= bool(4byte)、dword=uint=hwnd、 char=boolean(1byte)
ヌルポインタを渡す時は NULL定数を使用してください。
VBAでの書き方
[ ]内は省略可能です。
[ Public | Private ] Declare Function name Lib “libname” [ Alias “aliasname” ] [ ( [ arglist ] ) ] [ As type ]
- name
- プロシージャ名。大文字・小文字を区別します。
- libname
- プロシージャが含まれるDLLファイル名を指定。拡張子「.dll」は省略可能。
- aliasname
- arglist
- プロシージャを呼び出すときに渡される変数。
- type
- プロシージャが返す戻り値の型。
以下のようにPtrSafeと書かれているものは64bitなのでUWSCでは使えません。
[ Public | Private ] Declare PtrSafe Function name Lib “libname” [ Alias “aliasname” ] [ ( [ arglist ] ) ] [ As type ]
arglistは引数で以下のように指定します。
[ Optional ] [ ByVal | ByRef ] [ ParamArray ] varname [ ( ) ] [ As type ]
- ByVal
- 値渡し
- ByRef
- 参照渡し
- varname
- プロシージャに渡される引数の変数の名前
- type
- 戻り値の型
UWSCでの書き方
DEF_DLL 関数名( 型, 型, … ): 戻り型: DLL名
DEF_DLL name( arglist ): type: libname
以下はarglistの書き方です。配列の場合「[]」をつけ、参照渡し(VBAでByRefのとき)は「Var 」をつけます。
arg1, arg2[], Var arg3
記述例
Declare Function GetCaretPos Lib “user32” Alias “GetCaretPos” (lpPoint As POINTAPI) As Long
- 関数名(name)
- GetCaretPos
- 型(arglist(varname))
- {long, long}
- 戻り型(type)
- long
- DLL名(libname)
- user32
typeはPOINTAPIは構造体なので中身を展開して{ }で型を囲む。
Type POINTAPI
x As Long
y As Long
End Type
以上からUWSCで宣言するには以下のようになります。
DEF_DLL GetCaretPos({long, long}): long: user32