UDF > WinAPIEx > Diagnostic >


_WinAPI_DisplayStruct

Affiche, sous forme de liste, les données de la structure spécifiée ou les données à l'adresse mémoire spécifiée

#include <WinAPIDiag.au3>
_WinAPI_DisplayStruct ( $tStruct [, $sStruct = '' [, $sTitle = '' [, $iItem = 0 [, $iSubItem = 0 [, $iFlags = 0 [, $bTop = True [, $hParent = 0]]]]]]] )

Paramètres

$tStruct Une structure qui a été créée par DllStructCreate(), ou une adresse mémoire à partir de laquelle afficher ses données.
$sStruct [optionnel] Une chaîne représentant la structure.
Si $tStruct est une structure, ce paramètre peut être omis ou être la chaîne vide. Dans ce cas, la structure s'affichera comme la structure "byte[n]".
Si $tStruct est une adresse mémoire, $sStruct doit être une chaîne représentant la structure, sinon, la fonction échoue, et @error = 10.
$sTitle [optionnel] Le titre de la fenêtre, par défaut "Structure: ListView Display".
$iItem [optionnel] L'index, de base 1, ou le nom du membre de la structure qui doit être sélectionné dans la liste.
Si ce paramètre est 0 (par défaut), ou si l'index ou le nom est incorrect, le premier élément de la structure sera sélectionné.
$iSubItem [optionnel] L'index, de base 1, du tableau dans le membre de la structure pointé par le paramètre $iItem sera sélectionné.
Si $iItem n'a pas été défini comme un tableau dans le $sStruct, ou si l'index du tableau est invalide, l'élément pointé par le paramètre $iItem sera sélectionné.
$iFlags [optionnel] Un jeu de bits qui spécifie des options d'affichage supplémentaires.
Ce paramètre peut être 0, ou toute combinaison des valeurs suivantes:
    1 - Empêcher l'affichage des champs "<struct>" et "<endstruct>" au début et à la fin de la liste.
    2 - Empêche l'affichage des champs "<alignment>".
    4 - Empêche l'affichage de "<unnamed>" dans la colonne "Member" de la liste si l'élément de la structure n'a pas de nom.
    8 - Empêche la mise en valeur des éléments de la structure qui sont définis comme tableau.
    16 - Empêche les éléments de la structure nommés "Reserved*" d'être perçus comme des éléments inutilisés.
    32 - Empêche l'utilisation du double-clic pour copier les valeurs des éléments de la structure dans le presse-papier.
    64 - Oblige d'étendre les éléments de la structure de type BYTE[n] et BOOLEAN[n] (les éléments de types CHAR[n] et WCHAR[n] s'affichent toujours comme une chaîne).
    128 - Oblige à afficher les valeurs des éléments de la structure dans une représentation hexadécimale, si possible.
    256 - Oblige à retourner un code d'erreur au lieu d'afficher une boîte de message si une erreur d'accès mémoire s'est produite.
    512 - Oblige à désactiver la vérification de la lecture de la mémoire attribuée à une structure donnée.
$bTop [optionnel] Spécifie s'il faut créer une fenêtre avec l'attribut "Always On Top", les valeurs possibles sont:
    True - La fenêtre est créée avec le style étendu $WS_EX_TOPMOST (par défaut).
    False - La fenêtre n'aura pas le flag "TOPMOST" activé.
$hParent [optionnel] Handle de la fenêtre parent.

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0 et définit @error <> 0.
@error: 2 - Il y a un type de données inconnu dans la chaîne passée.
3 - Impossible d'allouer la mémoire nécessaire pour la structure, ou pointeur non valide.
4 - Erreur d'allocation mémoire pour la chaîne passée.
10 - Le paramètre $sStruct n'est pas une chaîne.
15 - Erreur d'accès mémoire lors de la lecture de donnée.

Remarque

Cette fonction est destinée principalement pour le débogage et ne doit pas être utilisée dans le script final, puisque aucune information utile pour l'utilisateur final n'est retenue.

Exemple

#include <WinAPIDiag.au3>

Local $sStruct = 'dword Length;short State;uint Flags;handle hBitmap;hwnd hDC;long Rect[4];byte[14];int Reserved[10];wchar Text[80]'
Local $tStruct = DllStructCreate($sStruct)

DllStructSetData($tStruct, 1, 80)
DllStructSetData($tStruct, 2, 6)
DllStructSetData($tStruct, 3, 1)
DllStructSetData($tStruct, 4, 0x00010014)
DllStructSetData($tStruct, 5, 0x01010057)
DllStructSetData($tStruct, 6, 20, 1)
DllStructSetData($tStruct, 6, 20, 2)
DllStructSetData($tStruct, 6, 60, 3)
DllStructSetData($tStruct, 6, 80, 4)
DllStructSetData($tStruct, 7, Binary('0x656A6D633835206C6A6764206200'))
DllStructSetData($tStruct, 8, 0)
DllStructSetData($tStruct, 9, 'Simple Text')

_WinAPI_DisplayStruct($tStruct, $sStruct)