Freigeben über


SetThreadExecutionState-Funktion (winbase.h)

Ermöglicht es einer Anwendung, das System darüber zu informieren, dass es verwendet wird, wodurch verhindert wird, dass das System in den Standbymodus wechselt oder die Anzeige deaktiviert wird, während die Anwendung ausgeführt wird.

Syntax

EXECUTION_STATE SetThreadExecutionState(
  [in] EXECUTION_STATE esFlags
);

Parameter

[in] esFlags

Die Ausführungsanforderungen des Threads. Dieser Parameter kann einen oder mehrere der folgenden Werte aufweisen.

Wert Bedeutung
ES_AWAYMODE_REQUIRED
0x00000040
Aktiviert den Wegmodus. Dieser Wert muss mit ES_CONTINUOUS angegeben werden.

Der Abwesenheitsmodus sollte nur von Medienaufzeichnungs- und Medienverteilungsanwendungen verwendet werden, die eine kritische Hintergrundverarbeitung auf Desktopcomputern durchführen müssen, während sich der Computer im Ruhezustand zu befinden scheint. Siehe Hinweise.

ES_CONTINUOUS
0x80000000
Informiert das System darüber, dass der festgelegte Zustand so lange wirksam bleiben soll, bis der nächste Aufruf , der ES_CONTINUOUS verwendet, und eines der anderen Statusflags gelöscht wird.
ES_DISPLAY_REQUIRED
0x00000002
Erzwingt, dass die Anzeige aktiviert wird, indem der Leerlauftimer der Anzeige zurückgesetzt wird.
ES_SYSTEM_REQUIRED
0x00000001
Erzwingt, dass sich das System im Betriebszustand befindet, indem der Leerlauftimer des Systems zurückgesetzt wird.
ES_USER_PRESENT
0x00000004
Dieser Wert wird nicht unterstützt. Wenn ES_USER_PRESENT mit anderen esFlags-Werten kombiniert wird, schlägt der Aufruf fehl, und keiner der angegebenen Zustände wird festgelegt.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert der vorherige Threadausführungszustand.

Wenn bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL.

Hinweise

Das System erkennt automatisch Aktivitäten wie lokale Tastatur- oder Mauseingaben, Serveraktivitäten und das Ändern des Fensterfokus. Aktivitäten, die nicht automatisch erkannt werden, umfassen Datenträger- oder CPU-Aktivität und Videoanzeige.

Wenn Sie SetThreadExecutionState ohne ES_CONTINUOUS aufrufen, wird einfach der Leerlauftimer zurückgesetzt. Um die Anzeige oder das System im Arbeitszustand zu halten, muss der Thread SetThreadExecutionState in regelmäßigen Abständen aufrufen.

Anwendungen wie Faxserver, Anrufbeantworter, Sicherungs-Agents und Netzwerkverwaltungsanwendungen müssen bei der Verarbeitung von Ereignissen sowohl ES_SYSTEM_REQUIRED als auch ES_CONTINUOUS verwenden, um auf einem mit Strom verwalteten Computer ordnungsgemäß ausgeführt zu werden. Multimediaanwendungen, z. B. Videoplayer und Präsentationsanwendungen, müssen ES_DISPLAY_REQUIRED verwenden, wenn sie Videos über einen längeren Zeitraum ohne Benutzereingabe anzeigen. Anwendungen wie Textverarbeitung, Tabellenkalkulationen, Browser und Spiele müssen SetThreadExecutionState nicht aufrufen.

Der wert ES_AWAYMODE_REQUIRED sollte nur verwendet werden, wenn dies von Medienanwendungen unbedingt erforderlich ist, die das System zum Ausführen von Hintergrundaufgaben benötigen, z. B. das Aufzeichnen von Fernsehinhalten oder das Streamen von Medien auf andere Geräte, während das System zu schlafen scheint. Anwendungen, die keine kritische Hintergrundverarbeitung erfordern oder auf tragbaren Computern ausgeführt werden, sollten den Auswärtsmodus nicht aktivieren, da er verhindert, dass das System Strom spart, indem er in den richtigen Standbymodus wechselt.

Um den Wegmodus zu aktivieren, verwendet eine Anwendung sowohl ES_AWAYMODE_REQUIRED als auch ES_CONTINUOUS. Um den Auswärtsmodus zu deaktivieren, ruft eine Anwendung SetThreadExecutionState mit ES_CONTINUOUS auf und löscht ES_AWAYMODE_REQUIRED. Wenn der Abwesenheitsmodus aktiviert ist, versetzt jeder Vorgang, der den Computer in den Standbymodus versetzt, stattdessen in den Abwesenheitsmodus. Der Computer scheint im Ruhezustand zu sein, während das System weiterhin Aufgaben ausführt, die keine Benutzereingabe erfordern. Der Abwesenheitsmodus wirkt sich nicht auf den Ruhezustandstimer aus. Um zu verhindern, dass das System nach Ablauf des Timers in den Ruhezustand wechselt, muss eine Anwendung auch den wert ES_SYSTEM_REQUIRED festlegen.

Die SetThreadExecutionState-Funktion kann nicht verwendet werden, um zu verhindern, dass der Benutzer den Computer in den Standbymodus versetzt. Anwendungen sollten berücksichtigen, dass der Benutzer ein bestimmtes Verhalten erwartet, wenn er den Deckel auf dem Laptop schließt oder den Netzschalter drückt.

Diese Funktion verhindert nicht, dass der Bildschirmschoner ausgeführt wird.

Beispiele

// Television recording is beginning. Enable away mode and prevent
// the sleep idle time-out.
//
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);

//
// Wait until recording is complete...
//

//
// Clear EXECUTION_STATE flags to disable away mode and allow the system to idle to sleep normally.
//
SetThreadExecutionState(ES_CONTINUOUS);

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbase.h (Windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Energieverwaltungsfunktionen

SetSuspendState

SetSystemPowerState

WM_POWERBROADCAST