本ページには広告が含まれています。
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 |
tableL名(libname) | user32 |
typeはPOINTAPIは構造体なので中身を展開して{ }で型を囲む。
Type POINTAPI
x As Long
y As Long
End Type
以上からUWSCで宣言するには以下のようになります。
DEF_DLL GetCaretPos({long, long}): long: user32