調(diào)用指定DLL(動(dòng)態(tài)鏈接庫)文件內(nèi)部的函數(shù)。
DllCall ( "dll", "返回值類型", "函數(shù)名" [, "類型1", 參數(shù)1 [, "類型 n", 參數(shù) n]] )
參數(shù)
dll | 要使用的 DLL 文件名,例如 "user32.dll"。也可使用由 DllOpen 獲得的句柄(請(qǐng)查看下面的注意部分)。 |
返回值類型 | 函數(shù)的返回值類型(請(qǐng)查看下面的注意部分)。 |
函數(shù)名 | 要調(diào)用的函數(shù)名,例如 "MessageBox" |
類型 | [可選參數(shù)] 參數(shù)的數(shù)據(jù)類型(請(qǐng)查看下面的注意部分). |
參數(shù) | [可選參數(shù)] 實(shí)參(請(qǐng)查看下面的注意部分)。 |
返回值
請(qǐng)查看下面的注意部分。
注意
若給定的是 DLL 文件名則在調(diào)用函數(shù)時(shí)該 DLL 文件將被自動(dòng)加載并在結(jié)束調(diào)用后被關(guān)閉。若需自己控制 DLL 的加載及卸載,請(qǐng)使用 DllOpen 和 DllClose 函數(shù)(執(zhí)行相應(yīng)操作)并在調(diào)用本函數(shù)時(shí)使用句柄而不是文件名。類型 | 說明 |
none | 無對(duì)應(yīng)值(僅用作無返回值函數(shù)的返回類型,這點(diǎn)跟C語言類似) |
short | 16 位整型 |
int | 32 位整型 |
long | 32 位整型 |
short_ptr | 指向 16 位整型的指針 |
int_ptr | 指向 32 位整型的指針 |
long_ptr | 指向 32 位整型的指針 |
str | 字符串 |
wstr | 寬字符串(可在調(diào)用函數(shù)期間轉(zhuǎn)換為 ANSI 字符串或由 ANSI 字符串轉(zhuǎn)換為寬字符串) |
hwnd | 窗口句柄 |
ptr | 通用指針(void *) |
相關(guān)
無
示例
; 示例 1 - 直接調(diào)用 API 函數(shù) MessageBox
$result = DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "這是對(duì)話框的文本", "str", "這是對(duì)話框的標(biāo)題", "int", 0)
; 示例 2 - 傳遞變量以調(diào)用一個(gè)函數(shù)
$hwnd = WinGetHandle("無標(biāo)題 - 記事本")
$result = DllCall("user32.dll", "int", "GetWindowText", "hwnd", $hwnd, "str", "", "int", 32768)
msgbox(0, "", $result[0]) ; 返回記事本窗口標(biāo)題的字符數(shù)
msgbox(0, "", $result[2]) ; 參數(shù)2中返回的文本(即窗口標(biāo)題)