GetGUIThreadInfo-Funktion (winuser.h)

Ruft Informationen zum aktiven Fenster oder einem angegebenen GUI-Thread ab.

Syntax

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

Parameter

[in] idThread

Art: DWORD

Der Bezeichner für den Thread, für den Informationen abgerufen werden sollen. Verwenden Sie zum Abrufen dieses Werts die GetWindowThreadProcessId-Funktion . Wenn dieser Parameter NULL ist, gibt die Funktion Informationen für den Vordergrundthread zurück.

[in, out] pgui

Typ: LPGUITHREADINFO

Ein Zeiger auf eine GUITHREADINFO-Struktur , die Informationen empfängt, die den Thread beschreiben. Beachten Sie, dass Sie das cbSize-Element auf festlegen müssen, sizeof(GUITHREADINFO) bevor Sie diese Funktion aufrufen.

Rückgabewert

Typ: BOOL

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Diese Funktion ist auch dann erfolgreich, wenn sich das aktive Fenster nicht im Besitz des aufrufenden Prozesses befindet. Wenn der angegebene Thread nicht vorhanden ist oder über eine Eingabewarteschlange verfügt, schlägt die Funktion fehl.

Diese Funktion ist nützlich, um Kontextbezogene Informationen zu einem Thread abzurufen. Die abgerufenen Informationen sind identisch mit dem, wenn eine Anwendung die Informationen über sich selbst abgerufen hat.

Für ein Bearbeitungssteuerelement enthält das zurückgegebene rcCaret-Rechteck das Caret-Element sowie Informationen zu Textrichtung und Auffüllung. Daher gibt er möglicherweise nicht die richtige Position des Cursors an. Die Schriftart Sans Serif verwendet vier Zeichen für den Cursor:

Cursorzeichen Unicode-Codepunkt
CURSOR_LTR 0xf00c
CURSOR_RTL 0xf00d
CURSOR_THAI 0xf00e
CURSOR_USA 0xfff (dies ist ein Markerwert ohne zugeordnete Glyphe)
 

Führen Sie die folgenden Schritte aus, um die tatsächliche Einfügemarke im rcCaret-Rechteck abzurufen.

  1. Rufen Sie GetKeyboardLayout auf, um die aktuelle Eingabesprache abzurufen.
  2. Bestimmen Sie das für den Cursor verwendete Zeichen basierend auf der aktuellen Eingabesprache.
  3. Rufen Sie CreateFont mit Sans Serif für die Schriftart, die von rcCaret angegebene Höhe und eine Breite von auf zero. Rufen Sie für fnWeight auf SystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0). Wenn pvParam größer als 1 ist, legen Sie fnWeight auf 700 fest, andernfalls fnWeight auf 400.
  4. Wählen Sie die Schriftart in einem Gerätekontext (Device Context, DC) aus, und verwenden Sie GetCharABCWidths , um die B Breite des entsprechenden Cursorzeichens abzurufen.
  5. Fügen Sie rcCaret die B Breite hinzu.links, um die tatsächliche Einfügemarke zu erhalten.

Die Funktion gibt möglicherweise keine gültigen Fensterhandles in der GUITHREADINFO-Struktur zurück, wenn sie aufgerufen wird, um Informationen für den Vordergrundthread abzurufen, z. B. wenn ein Fenster die Aktivierung verliert.

DPI-Virtualisierung

Die koordinaten, die im rcCaret-Rechteck der GUITHREADINFO-Struktur zurückgegeben werden, sind logische Koordinaten im Sinne des Fensters, das dem Caretzeichen zugeordnet ist. Sie werden nicht in den Modus des aufrufenden Threads virtualisiert.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (windows.h einschließen)
Bibliothek User32.lib
DLL User32.dll
APIs ext-ms-win-ntuser-window-l1-1-1 (eingeführt in Windows 8.1)

Siehe auch

Konzept

GUITHREADINFO

GetCursorInfo

GetWindowThreadProcessId

Referenz

Windows