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.
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 |