A simple function to print a DllStruct on AutoIt.
#include <StringConstants.au3>
#include <Array.au3>
Func DllStructPrint($str, $tag)
Local $ret = ""
If IsDllStruct($str) Then
$tag = StringLower($tag)
Local $arr1, $arr2
$arr1 = StringSplit($tag, ";", $STR_NOCOUNT)
Local $aLabel[1]
For $ii = 0 To UBound($arr1, 1) - 1
If Not ($arr1[$ii] = "struct") And Not ($arr1[$ii] = "endstruct") Then
$arr2 = StringSplit($arr1[$ii], " ", $STR_NOCOUNT)
If IsArray($arr2) Then _ArrayAdd($aLabel, $arr2[1])
EndIf
Next
For $ii = 1 To UBound($aLabel, 1) - 1
$ret &= $aLabel[$ii] & "=" & DllStructGetData($str, $aLabel[$ii])
Next
ElseIf IsArray($str) Then
$ret &= "[" & @LF
Local $iSize = UBound($str, 1) - 1
For $ii = 0 To $iSize
$ret &= " " & DllStructPrint($str[$ii], $tag) & ($ii = $iSize ? "" : ",") & @LF
Next
$ret &= "]" & @LF
EndIf
Return $ret
EndFunc ;==>DllStructPrint
Local $tag = "Struct;byte key;EndStruct"
Local $str1 = DllStructCreate($tag)
$str1.key = Random(100, 999)
Local $str2 = DllStructCreate($tag)
$str2.key = Random(100, 999)
Local $str3 = DllStructCreate($tag)
$str3.key = Random(100, 999)
Local $arr[2]
$arr[0] = $str2
$arr[1] = $str3
Local $var1 = DllStructPrint($str1, $tag)
ConsoleWrite($var1 & @LF)
Local $var2 = DllStructPrint($arr, $tag)
ConsoleWrite($var2 & @LF)
OUTPUT:
key=189
[
key=155,
key=62
]