Partager via


GetGUIThreadInfo, fonction (winuser.h)

Récupère des informations sur la fenêtre active ou un thread d’interface utilisateur spécifié.

Syntaxe

BOOL GetGUIThreadInfo(
  [in]      DWORD          idThread,
  [in, out] PGUITHREADINFO pgui
);

Paramètres

[in] idThread

Type : DWORD

Identificateur du thread pour lequel les informations doivent être récupérées. Pour récupérer cette valeur, utilisez la fonction GetWindowThreadProcessId . Si ce paramètre a la valeur NULL, la fonction retourne des informations pour le thread de premier plan.

[in, out] pgui

Type : LPGUITHREADINFO

Pointeur vers une structure GUITHREADINFO qui reçoit des informations décrivant le thread. Notez que vous devez définir le membre cbSize sur sizeof(GUITHREADINFO) avant d’appeler cette fonction.

Valeur retournée

Type : BOOL

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Cette fonction réussit même si la fenêtre active n’appartient pas au processus appelant. Si le thread spécifié n’existe pas ou a une file d’attente d’entrée, la fonction échoue.

Cette fonction est utile pour récupérer des informations hors contexte sur un thread. Les informations récupérées sont les mêmes que si une application récupérait les informations la concernant.

Pour un contrôle d’édition, le rectangle rcCaret retourné contient l’insertion ainsi que des informations sur la direction et le remplissage du texte. Par conséquent, il peut ne pas donner la position correcte du curseur. La police Sans Serif utilise quatre caractères pour le curseur :

Caractère de curseur point de code Unicode
CURSOR_LTR 0xf00c
CURSOR_RTL 0xf00d
CURSOR_THAI 0xf00e
CURSOR_USA 0xfff (il s’agit d’une valeur de marqueur sans glyphe associé)
 

Pour obtenir le point d’insertion réel dans le rectangle rcCaret , procédez comme suit.

  1. Appelez GetKeyboardLayout pour récupérer la langue d’entrée actuelle.
  2. Déterminez le caractère utilisé pour le curseur, en fonction de la langue d’entrée actuelle.
  3. Appelez CreateFont en utilisant Sans Serif pour la police, la hauteur donnée par rcCaret et une largeur de zero. Pour fnWeight, appelez SystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0). Si pvParam est supérieur à 1, définissez fnWeight sur 700, sinon, définissez fnWeight sur 400.
  4. Sélectionnez la police dans un contexte d’appareil (DC) et utilisez GetCharABCWidths pour obtenir la B largeur du caractère de curseur approprié.
  5. Ajoutez la B largeur à rcCaret.gauche pour obtenir le point d’insertion réel.

La fonction peut ne pas retourner de handles de fenêtre valides dans la structure GUITHREADINFO lorsqu’elle est appelée pour récupérer des informations pour le thread de premier plan, par exemple lorsqu’une fenêtre perd l’activation.

Virtualisation PPP

Les coordonnées retournées dans la rect rcCaret du struct GUITHREADINFO sont des coordonnées logiques en termes de fenêtre associée à l’insertion. Ils ne sont pas virtualisés dans le mode du thread appelant.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
DLL User32.dll
Ensemble d’API ext-ms-win-ntuser-window-l1-1-1 (introduit dans Windows 8.1)

Voir aussi

Conceptuel

GUITHREADINFO

GetCursorInfo

GetWindowThreadProcessId

Référence

Windows