返回介绍

Function DllCall

发布于 2020-03-05 18:21:32 字数 2354 浏览 1110 评论 0 收藏 0

DllCall

调用指定DLL(动态链接库)文件内部的函数。

DllCall ( "dll", "返回值类型", "函数名" [, "类型1", 参数1 [, "类型 n", 参数 n]] )

参数

dll 要使用的 DLL 文件名,例如 "user32.dll"。也可使用由 DllOpen 获得的句柄(请查看下面的注意部分)。
返回值类型 函数的返回值类型(请查看下面的注意部分)。
函数名 要调用的函数名,例如 "MessageBox"
类型 [可选参数] 参数的数据类型(请查看下面的注意部分).
参数 [可选参数] 实参(请查看下面的注意部分)。

返回值

请查看下面的注意部分。

注意

若给定的是 DLL 文件名则在调用函数时该 DLL 文件将被自动加载并在结束调用后被关闭。若需自己控制 DLL 的加载及卸载,请使用 DllOpen 和 DllClose 函数(执行相应操作)并在调用本函数时使用句柄而不是文件名。

您可以按需传递不限数量的“类型”和“参数”。请参考下面的示例。

合法的数据类型包括:

类型 说明
none 无对应值(仅用作无返回值函数的返回类型,这点跟C语言类似)
short 16 位整型
int 32 位整型
long 32 位整型
short_ptr 指向 16 位整型的指针
int_ptr 指向 32 位整型的指针
long_ptr 指向 32 位整型的指针
str 字符串
wstr 宽字符串(可在调用函数期间转换为 ANSI 字符串或由 ANSI 字符串转换为宽字符串)
hwnd 窗口句柄
ptr 通用指针(void *)

若调用函数失败则 @error 将被设为 1,否则将返回一个含有函数返回值及参数副本(包括函数已修改的参数)的数组。
$return[0] = 函数的返回值
$return[1] = 参数1
$return[2] = 参数2
...
$return[n] = 参数n

相关

示例


; 示例 1 - 直接调用 API 函数 MessageBox
$result = DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "这是对话框的文本", "str", "这是对话框的标题", "int", 0)

; 示例 2 - 传递变量以调用一个函数
$hwnd = WinGetHandle("无标题 - 记事本")
$result = DllCall("user32.dll", "int", "GetWindowText", "hwnd", $hwnd, "str", "", "int", 32768)
msgbox(0, "", $result[0]) ; 返回记事本窗口标题的字符数
msgbox(0, "", $result[2]) ; 参数2中返回的文本(即窗口标题)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文