Functions > Process >


DllStructGetData

Obtient la valeur d'un �l�ment de la structure.

DllStructGetData ( Struct, Element [, index = Default] )

Param�tres

Struct La structure retourn�e par DllStructCreate().
Element L'�l�ment de la structure auquel vous souhaitez acc�der, � partir de 1, ou du nom de l'�l�ment tel que d�fini dans DllStructCreate().
index [optionnel] Pour les �l�ments qui sont dans un tableau ce param�tre sp�cifie l'index de base 1 � r�cup�rer. S'il est omis ou si le mot-cl� Default est utilis�, alors le tableau entier est r�cup�r� (utile pour r�cup�rer rapidement des cha�nes). Ne pas utiliser pour des �l�ments qui ne sont pas dans un tableau.

Valeur de retour

Succ�s: Retourne les donn�es dans l'�l�ment de la structure.
�chec: Retourne 0.
@error: 1 = La structure n'est pas une structure correcte retourn�e par DllStructCreate().
2 = Valeur de l'�l�ment en dehors des limites ou inconnu.
3 = L'index est hors des limites.
4 = Type d'�l�ment de donn�e inconnu
5 = index <= 0.

Remarque

Lorsque l'�l�ment est char ou char[n], wchar ou wchar[n] la valeur retourn�e est toujours une cha�ne.
Lorsque l'�l�ment est byte[n] et l'index est omis la valeur retourn�e est de type binaire.
Sinon, la fonction retourne toujours le meilleur type de donn�e AutoIt correspondant au type de l'�l�ment individuel (par exemples, 'byte' retourne 'Int32', 'float' retourne 'Double').

En relation

DllStructCreate, DllStructSetData

Exemple

#include <MsgBoxConstants.au3>

Example()

Func Example()
    #cs Commentaires:
    Cr�e la structure suivante (langage C):
    struct {
        int var1;
        unsigned char var2;
        unsigned int var3;
        char var4[128];
    };

    Sch�ma:
    ------------------------------------
    \ int    \ byte   \ uint   \ char   \
     \   var1 \   var2 \   var3 \   var4 \
      ------------------------------------
    #ce

    ; Assigne une constante locale avec la d�finition d'une structure (lire attentivement les remarques DllStructCreate).
    Local Const $tagSTRUCT1 = "struct;int var1;byte var2;uint var3;char var4[128];endstruct"

    ; Note: La variable $tag est d�clar�e comme Const parce que sa valeur ne changera pas pendant toute l'ex�cution du script.

    ; Assigne une variable locale avec la structure.
    Local $tSTRUCT1 = DllStructCreate($tagSTRUCT1)

    ; Si une erreur s'est produite, affiche le code d'erreur et retourne False.
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "", "Erreur dans DllStructCreate, Code: " & @error)
        Return False
    EndIf

    ; D�finit les donn�es de l'�l�ment var1 (int) dans $tSTRUCT1.
    DllStructSetData($tSTRUCT1, "var1", -1)  ; Ou 1 � la place de "var1".

    ; D�finit les donn�es de l'�l�ment var2 (octet) dans $tSTRUCT1.
    DllStructSetData($tSTRUCT1, 2, 255)  ; Ou "var2" au lieu de 2.

    ; D�finit les donn�es de l'�l�ment var3 (uint) dans $tSTRUCT1.
    DllStructSetData($tSTRUCT1, "var3", -1)  ; Le -1 (Int sign�) sera converti en un int non sign�.
     ; Ou 3 au lieu de "var3".

    ; D�finit les donn�es de l'�l�ment var4 (char) dans la $tSTRUCT1.
    DllStructSetData($tSTRUCT1, "var4", "Hello")  ; Ou 4 au lieu de "var4".

    ; Remarque: Cet �l�ment peut contenir jusqu'� 128 caract�res.

    ; Modifie les donn�es de l'�l�ment var4 (char) dans $tSTRUCT1, � l'index 1 du tableau de caract�res (de base 1).
    DllStructSetData($tSTRUCT1, "var4", Asc("h"), 1)

    ; Affiche les r�sultats.
    MsgBox($MB_SYSTEMMODAL, "", "Struct Size: " & DllStructGetSize($tSTRUCT1) & @CRLF & _
            "Struct pointer: " & DllStructGetPtr($tSTRUCT1) & @CRLF & _
            "Data:" & @CRLF & _
            DllStructGetData($tSTRUCT1, 1) & @CRLF & _  ; Ou "var1" � la place de 1.
            DllStructGetData($tSTRUCT1, "var2") & @CRLF & _  ; Ou 2 � la place de "var2".
            DllStructGetData($tSTRUCT1, 3) & @CRLF & _  ; Ou "var3" � la place de 3.
            DllStructGetData($tSTRUCT1, 4))  ; Ou "var4" � la place de 4.

    ; Lib�re les ressources utilis�es par la structure.
    $tSTRUCT1 = 0
EndFunc   ;==>Example