欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基 礎(chǔ) 函 數(shù) 參 考


DllCall

調(diào)用 DLL 文件中的函數(shù).

DllCall ( "文件", "返回類型", "函數(shù)" [, "類型 1", 參數(shù) 1[, "類型 n", 參數(shù) n]] )

參 數(shù)

文件 DLL 文件名. 例如 "user32.dll". 也可使用由 DllOpen 返回的句柄 (見備注).
返回類型 函數(shù)的返回類型 (見下文).
函數(shù) DLL 文件內(nèi)的函數(shù)名稱, 例如 "MessageBox" 或序號值, 例如 62.
類型1 [可選參數(shù)] 第一個類型參數(shù) (見備注).
參數(shù)1 [可選參數(shù)] 第一個實際參數(shù) (見備注).
類型n [可選參數(shù)] 第 n 個類型參數(shù) (見備注).
參數(shù)n [可選參數(shù)] 第 n 個實際參數(shù) (見備注).

類型值:
類型 描述
none 沒有值 (用于只有一個有效返回的類型 - 相當于 C 語言的 void)
BYTE 無符號 8 位整數(shù)
BOOLEAN 無符號 8 位整數(shù)
short 16 位整數(shù)
USHORT 無符號 16 位整數(shù)
WORD 無符號 16 位整數(shù)
int 32 位整數(shù)
long 32 位整數(shù)
BOOL 32 位整數(shù)
UINT 無符號 32 位整數(shù)
ULONG 無符號 32 位整數(shù)
DWORD 無符號 32 位整數(shù)
INT64 64 位整數(shù)
UINT64 無符號 64 位整數(shù)
ptr 常規(guī)指針 (void *)
HWND 窗口句柄 (指針)
HANDLE 句柄(指針)
float 單精度浮點數(shù)
double 雙精度浮點數(shù)
INT_PTR, LONG_PTR, LRESULT, LPARAM 大型整數(shù)指針, 在 x86 或 x64 的 AutoIt 版本中運行.
UINT_PTR, ULONG_PTR, DWORD_PTR, WPARAM 大型無符號整數(shù)指針, 在 x86 或 x64 的 AutoIt 版本中運行.
str ANSI 字符串 (不超過 65536 個字符).
wstr UNICODE 寬字符串 (不超過 65536 個字符).
struct 用于 DllStructCreate() 創(chuàng)建結(jié)構(gòu)
* 添加一個 * 到另一個類型末尾. 例如 "int*" 傳遞一個指針到 "int" 類型.

Windows API 類型轉(zhuǎn)換為 AutoIt 類型:
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
要在結(jié)構(gòu)中使用嵌套結(jié)構(gòu),必須重新定義嵌套結(jié)構(gòu).
例如, 一個結(jié)構(gòu)包含 2 POINT ("long;long"), 必須定義為 "long;long;long;long".
前兩個 long 值對應(yīng)的第一個 POINT; 后兩個 long 值對應(yīng)的第二個 POINT.
了解更多的 Windows API 類型, 請參考 MSDN.

返 回 值

成功: @error = 0.
失敗: 設(shè)置 @error
@error: 1 不能使用這個 DLL 文件,
2 未知的 "返回類型",
3 在 DLL 文件中未找到這個"函數(shù)",
4 參數(shù)數(shù)量錯誤.
5 參數(shù)無效.
見備注.

備 注

如果指定 dll 文件名, DLL 將會被自動加載, 并在調(diào)用結(jié)束后關(guān)閉.
如果要手動控制 DLL 的加載和卸載, 則應(yīng)使用 DllOpen 與 DllClose 函數(shù), 并使用句柄代替文件名.

默認 AutoIt 使用 'stdcall' 的調(diào)用約定. 要使用 'cdecl' 調(diào)用方式, 在返回值類型后面加上 ':cdecl'. 例如:
DllCall("SQLite.dll", "int:cdecl", "sqlite3_open", "str", $sDatabase_Filename , "long*", 0).

默認 AutoIt 使用 ANSI 的函數(shù)名, 例如 MessageBoxA 使用 MessageBox 給出的函數(shù)名.
要調(diào)用 unicode 版本, 使用 MessageBoxW.

如果函數(shù)調(diào)用失敗, 將設(shè)置 @error 為 1.
否則返回包含函數(shù)返回值和所有參數(shù)副本的數(shù)組 (包括可能被傳遞參數(shù)修改的函數(shù)參數(shù)).
$return[0] = 函數(shù)返回值
$return[1] = 參數(shù)1
$return[2] = 參數(shù)2
...
$return[n] = 參數(shù)n

相 關(guān) 函 數(shù)

DllCallbackFree, DllCallbackGetPtr, DllCallbackRegister, DllOpen, DllClose, DllStructCreate, DllStructGetPtr

函 數(shù) 示 例


; *******************************************************
; 示例 1 - 直接調(diào)用 MessageBox API
; *******************************************************

Local $result = DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "若干標題", "str", "若干標題", "int", 0)


; *******************************************************
; 示例 2 - 修改調(diào)用函數(shù)的參數(shù)
; *******************************************************

Local $hwnd = WinGetHandle("[CLASS:Notepad]")
$result = DllCall("user32.dll", "int", "GetWindowText", "hwnd", $hwnd, "str", "", "int", 32768)
MsgBox(0, "", $result[0]) ; 返回的字符數(shù)
MsgBox(0, "", $result[2]) ; 參數(shù) 2 返回的文本


; *******************************************************
; 示例 3 - 顯示 PickIconDlg(顯示選擇包含圖標資源文件的對話框) 窗口
; *******************************************************

Local $sFileName = @SystemDir & '\shell32.dll'

; 創(chuàng)建數(shù)據(jù)結(jié)構(gòu)存儲圖標索引
Local $stIcon = DllStructCreate("int")
Local $stString = DllStructCreate("wchar[260]")
Local $structsize = DllStructGetSize($stString) / 2
DllStructSetData($stString, 1, $sFileName)

; 運行 PickIconDlg - '62' 是這個函數(shù)的序號值
DllCall("shell32.dll", "none", 62, "hwnd", 0, "ptr", DllStructGetPtr($stString), "int", $structsize, "ptr", DllStructGetPtr($stIcon))

$sFileName = DllStructGetData($stString, 1)
Local $nIconIndex = DllStructGetData($stIcon, 1)

; 顯示新的文件名和圖標索引
MsgBox(0, "信息", "選擇的文件: " & $sFileName & @LF & "圖標索引: " & $nIconIndex)

provider with jb51.net (unicode)