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 宣言を付ける

関数名(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