Function Reference

DllStructGetData

構造体の要素のデータを返します。

DllStructGetData ( Struct, Element [, index ] )

 

パラメータ

Struct DllStructCreateが返す構造体
Element 構造体のアクセスしたい要素。1 始まり。またはDllStructCreateで定義された要素
index [オプション] 要素が配列の場合、1始まりのインデックスで取得する要素を指定します。 省略したりDefaultキーワードを使用した場合、配列全体が取得されます(すばやく文字列を取得するのに便利です)。 非配列の要素には使ってはいけません。
* char[n]、byte[n]、ubyte[n]ではインデックスが省略された場合、全ての要素が返されます。

 

返し値

成功 構造体の要素内のデータ。
失敗 0
@Error: 0 = エラーなし。
1 = 構造体がDllStructCreateによって返された正常な構造体ではない。
2 = Elementの値が範囲外。
3 = indexが構造体の範囲外。
4 = Elementのデータ型が不明。
5 = index <= 0.

 

注意

要素がchar[n]でindexが省略された場合、返されるデータはStringです。
要素がbyte[n]、ubyte[n]でindexが省略された場合、返されるデータはバイナリ型です。
それ以外の場合は常に数値が返されます。

 

関連

DllStructCreate, DllStructSetData

 


$p  = DllStructCreate("dword dwOSVersionInfoSize;dword dwMajorVersion;dword dwMinorVersion;dword dwBuildNumber;dword dwPlatformId;char szCSDVersion[128]")

;p->dwOSVersionInfoSize = sizeof(OSVERSIONINFO) だと考えてください。
DllStructSetData($p, "dwOSVersionInfoSize", DllStructGetSize($p))

;DllCall 実行
$ret = DllCall("kernel32.dll","int","GetVersionEx","ptr",DllStructGetPtr($p))

if Not $ret[0] Then
    MsgBox(0,"DllCall Error","DllCall Failed")
    exit
EndIf

;返し値を取得
$major      = DllStructGetData($p,"dwMajorVersion")
$minor      = DllStructGetData($p,"dwMinorVersion")
$build      = DllStructGetData($p,"dwBuildNumber")
$platform   = DllStructGetData($p,"dwPlatformId")
$version    = DllStructGetData($p,"szCSDVersion")

;構造体を解放
$p =0

msgbox(0,"","Major: " & $major & @CRLF & _
            "Minor: " & $minor & @CRLF & _
            "Build: " & $build & @CRLF & _
            "Platform ID: " & $platform & @CRLF & _
            "Version: " & $version)