调用:
DllCall("dll","返回值类型","函数名称"[,"类型1",参数1[,"类型n",参数n]])
参数:
dll -> 要使用的 DLL 文件名,例如 "user32.dll",也可使用由DllOpen获得的句柄。
返回值类型 -> 函数的返回值类型。
函数名称 -> 调用DLL文件里面的函数名称, 如: "MessageBox"或者使用序号。
类型 -> [可选参数]参数的数据类型。
参数 -> [可选参数]实参。
type n -> [可选参数] 参数的数据类型。
param n -> [可选参数] 实参。
值类型为:
none -> 没有值(仅用作无返回值函数的返回类型,这点跟C语言类似)。
BYTE -> 8 位(bit)整数。
BOOLEAN -> 无符号 8 位(bit)整数。
short -> 16 位整数。
USHORT -> 无符号16 位整数。
WORD -> 无符号16 位整数。
int -> 32 位整数。
long -> 32 位整数。
BOOL -> 32 位整数。
UINT -> 无符号 32 位整数。
ULONG -> 无符号 32 位整数。
DWORD -> 无符号 32 位整数。
INT64 -> 64 位整数。
UINT64 -> 无符号 64 位整数。
ptr -> 常规指针(void *)。
HWND -> 窗口句柄(指针)。
HANDLE -> 一个句柄(指针)。
float -> 单精度浮点指针数。
double -> 双精度浮点指针数。
INT_PTR, LONG_PTR, LRESULT, LPARAM -> 一个大型整数指针.(目前x86,x64版本AutoIt都可以使用)。
UINT_PTR, ULONG_PTR, DWORD_PTR, WPARAM -> 一个大型无符号整数指针.(目前x86,x64版本AutoIt都可以使用)。
str -> ANSI 字符串(不能超过 65536 个字符)。
wstr -> UNICODE 宽字符串(转换 到/从 ANSI 字符串,部分CALL需要). 不能超过 65536 字符。
* -> 传递一个其它类型(添加一个*到末尾.) 例如 "int*" 传递一个指针到 "int" 类型。
返回值:
成功 -> @error = 0
失败 -> 设置 @error
1 -> 不能使用这个DLL文件。
2 -> 未知"返回值"。
3 -> 未在DLL文件中找到这个"函数"。
4 -> 参数数量错误。
Windows API类型转换为AutoIt类型:
LPCSTR/LPSTR -> str
LPCWSTR/LPWSTR -> wstr
LPVOID -> ptr
LPxyz -> xyz*
HINSTANCE -> handle
HRESULT -> long
LONGLONG/LARGE_INTEGER -> INT64
ULONGLONG/ULARGE_INTEGER -> UINT64
SIZE_T -> ULONG_PTR
代码案例:DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "这里是要描述的文字", "str", "这里是标题", "int", 0)
DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "这里是要描述的文字", "str", "这里是标题", "int", 64)