DLL使用定義

本ページには広告が含まれています。

DLL(API等)の関数を使用する事ができるようになります。64bitの DLLは呼び出せません。

構文
DEF_DLL 関数名( 型, 型, ... ): 戻り型: DLL名
引数
省略可
  1. int
  2. long
  3. bool
  4. uint
  5. hwnd
  6. string
  7. Wstring
  8. float
  9. double
  10. word
  11. dword
  12. byte
  13. char
  14. pchar
  15. Wchar
  16. pWchar
  17. boolean
  18. longlong
  19. SafeArray
戻り値

参照引数(値変更あり)の場合は Var 宣言を付ける

UWSC
関数名(Var double, Var int)

構造体:型を { } にて展開して書く

UWSC
関数名(double, {int, int, int})

配列の場合は型に [] を付ける

UWSC
関数名(double[], int[])

※int=long= bool(4byte)、dword=uint=hwnd、 char=boolean(1byte)
ヌルポインタを渡す時は NULL定数を使用してください。

VBAでの書き方

[ ]内は省略可能です。

VBA
[ Public | Private ] Declare Function name Lib "libname" [ Alias "aliasname" ] [ ( [ arglist ] ) ] [ As type ]
引数説明
nameプロシージャ名。大文字・小文字を区別します。
libnameプロシージャが含まれるDLLファイル名を指定。拡張子「.dll」は省略可能。
aliasname
arglistプロシージャを呼び出すときに渡される変数。
typeプロシージャが返す戻り値の型。

以下のようにPtrSafeと書かれているものは64bitなのでUWSCでは使えません。

VBA
[ Public | Private ] Declare PtrSafe Function name Lib "libname" [ Alias "aliasname" ] [ ( [ arglist ] ) ] [ As type ]

arglistは引数で以下のように指定します。

VBA
[ Optional ] [ ByVal | ByRef ] [ ParamArray ] varname [ ( ) ] [ As type ]
引数説明
ByVal値渡し
ByRef参照渡し
varnameプロシージャに渡される引数の変数の名前
type戻り値の型

UWSCでの書き方

UWSC
DEF_DLL 関数名( 型, 型, ... ): 戻り型: DLL名
UWSC
DEF_DLL name( arglist ): type: libname

以下はarglistの書き方です。配列の場合「[]」をつけ、参照渡し(VBAでByRefのとき)は「Var 」をつけます。

UWSC
arg1, arg2[], Var arg3

記述例

VBA
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は構造体なので中身を展開して{ }で型を囲む。

UWSC
Type POINTAPI
    x As Long
    y As Long
End Type

以上からUWSCで宣言するには以下のようになります。

UWSC
DEF_DLL GetCaretPos({long, long}): long: user32

参考文献

  1. Declare ステートメント (VBA) | Microsoft Learn

関連記事

DLL