返回数据结构元素的数据.
DllStructGetData ( 结构, 元素 [, 索引] )
结构 | 由 DllStructCreate 返回的数据结构. |
元素 | 要访问的数据结构元素, 起始于 1 或由 DllStructCreate 函数定义的元素名. |
索引 | [可选参数] 对于数组元素,需指定基于 1 的元素索引. 如果省略或 Default(默认)关键字, 则检索整个数组 (用于快速检索字符串). 不用于非数组元素 |
成功: | 返回数据结构的元素数据. |
失败: | 返回 0. |
@Error: | 0 = 无错误. |
1 = DllStructCreate 函数返回的数据结构不正确. | |
2 = 元素值超出范围. | |
3 = 索引值在数据结构外面. | |
4 = 元素的数据类型未知 | |
5 = 索引 <= 0. |
Local $p
= DllStructCreate("dword dwOSVersionInfoSize;dword dwMajorVersion;dword
dwMinorVersion;dword dwBuildNumber;dword dwPlatformId;char
szCSDVersion[128]")
;请想象为这样(C++样式): p->dwOSVersionInfoSize =
sizeof(OSVERSIONINFO)
DllStructSetData($p,
"dwOSVersionInfoSize", DllStructGetSize($p))
;生成 DllCall
Local $ret
= DllCall("kernel32.dll", "int", "GetVersionEx", "ptr", DllStructGetPtr($p))
If Not $ret[0] Then
MsgBox(0, "DllCall
错误", "DllCall
失败")
Exit
EndIf
;获取返回值
Local $major
= DllStructGetData($p, "dwMajorVersion")
Local $minor
= DllStructGetData($p, "dwMinorVersion")
Local $build
= DllStructGetData($p, "dwBuildNumber")
Local $platform
= DllStructGetData($p, "dwPlatformId")
Local $version
= DllStructGetData($p, "szCSDVersion")
;释放数据结构占用的内存
$p = 0
MsgBox(0, "", "Major:
" & $major & @CRLF & _
"Minor: " & $minor & @CRLF & _
"Build: " & $build & @CRLF & _
"Platform ID: " &
$platform &
@CRLF &
_
"Version: " & $version)
provider with jb51.net (unicode) |