Funktionsreferenz


DllStructGetData

Gibt die Daten eines Elements der Struktur zurück.

DllStructGetData ( Struct, Element [, index] )

Parameter

Struct Die Struktur zurückgegeben aus DllStructCreate.
Element Das Element auf das man zugreifen möchte, beginnend bei 1 oder dem Elementnamen wie in DllStructCreate festgelegt.
index [optional] Befinden sich die Elemente in einem Array, so legt dies den 1-basierenden Index des zu erneuernenden Arrays fest. Falls dies nicht angegeben wird oder das Schlüsselwort Default verwendet wird, so wird das komplette Array erneuert (nützlich für String die schnell erneuert werden sollten). Nicht für nicht-Array Elemente.
*char[n], byte[n] und ubyte[n] geben alle Daten der Elemente zurück wenn der Index ausgelassen wird.

Rückgabewert

Erfolg: Daten in dem Element der Struktur.
Fehler: 0.
@Error: 0 = Kein Fehler.
1 = Struct ist keine korrekte Struktur aus DllStructCreate zurückgegeben.
2 = Element-Wert nicht im zulässigen Bereich.
3 = Index würde ausserhalb der Struktur sein.
4 = Element Datentyp unbekannt
5 = Index <= 0.

Bemerkungen

Wenn das Element char[n] ist und der Index ausgelassen wird, ist der zurückgegebene Datentyp ein Zeichenstring,
Wenn das Element byte[n] ist oder ubyte[n] und der Index wird ausgelassen, ist der zurückgegebene Datentyp binär ,
andernfalls ist der zurückgegebene Datentyp immer eine Zahl.

Verwandte Funktionen

DllStructCreate, DllStructSetData

Beispiel


; Erstellen der DLL Struct, die in der DllCall Funktion benutzt wird:
Local $tagOSVERSIONINFO = DllStructCreate('dword dwOSVersionInfoSize;dword dwMajorVersion;dword dwMinorVersion;dword dwBuildNumber;dword dwPlatformId;char szCSDVersion[128]')

; Aktualisierung der Größe vom "Size" Element der Struct. Darin soll die Gesamtgröße der Struct (DllStructGetSize()) gepseichert werden.
DllStructSetData($tagOSVERSIONINFO, 'dwOSVersionInfoSize', DllStructGetSize($tagOSVERSIONINFO))

; DllCall um die API Funktion "GetVersionEx" aufzurufen und an die Struct weiterzuleiten:
Local $aReturn = DllCall('kernel32.dll', 'int', 'GetVersionEx', 'struct*', $tagOSVERSIONINFO)
If @error Or Not $aReturn[0] Then
    MsgBox(0, "DLLCall Error", "Systeminformationen konnten aufgrund eines Fehlers nicht gelesen werden.")
EndIf

; Auslesen der Daten von den Element-Strings:
Local $iMajorVersion = DllStructGetData($tagOSVERSIONINFO, 'dwMajorVersion')
Local $iMinorVersion = DllStructGetData($tagOSVERSIONINFO, 'dwMinorVersion')
Local $iBuildNumber = DllStructGetData($tagOSVERSIONINFO, 'dwBuildNumber')
Local $sServicePack = DllStructGetData($tagOSVERSIONINFO, 'szCSDVersion')

; Struct "löschen":
$tagOSVERSIONINFO = 0

MsgBox(0, "System", "Version: " & $iMajorVersion & @CRLF & _
        "Unterversion: " & $iMinorVersion & @CRLF & _
        "Build: " & $iBuildNumber & @CRLF & _
        "Service Pack: " & $sServicePack & @CRLF)