Função SetThreadExecutionState (winbase.h)
Permite que um aplicativo informe ao sistema que ele está em uso, impedindo assim que o sistema entre em suspensão ou desative a exibição enquanto o aplicativo está em execução.
Sintaxe
EXECUTION_STATE SetThreadExecutionState(
[in] EXECUTION_STATE esFlags
);
Parâmetros
[in] esFlags
Os requisitos de execução do thread. Esse parâmetro pode usar um dos valores a seguir.
Valor retornado
Se a função for bem-sucedida, o valor retornado será o estado de execução do thread anterior.
Se a função falhar, o valor retornado será NULL.
Comentários
O sistema detecta automaticamente atividades como entrada local do teclado ou mouse, atividade do servidor e alteração do foco da janela. As atividades que não são detectadas automaticamente incluem atividade de disco ou CPU e vídeo.
Chamar SetThreadExecutionState sem ES_CONTINUOUS simplesmente redefine o temporizador ocioso; para manter a exibição ou o sistema no estado de trabalho, o thread deve chamar SetThreadExecutionState periodicamente.
Para serem executados corretamente em um computador gerenciado por energia, aplicativos como servidores de fax, computadores de resposta, agentes de backup e aplicativos de gerenciamento de rede devem usar ES_SYSTEM_REQUIRED e ES_CONTINUOUS ao processar eventos. Aplicativos multimídia, como players de vídeo e aplicativos de apresentação, devem usar ES_DISPLAY_REQUIRED quando exibem vídeo por longos períodos de tempo sem a entrada do usuário. Aplicativos como processadores de palavras, planilhas, navegadores e jogos não precisam chamar SetThreadExecutionState.
O valor ES_AWAYMODE_REQUIRED deve ser usado somente quando absolutamente necessário por aplicativos de mídia que exigem que o sistema execute tarefas em segundo plano, como gravar conteúdo de televisão ou transmitir mídia para outros dispositivos enquanto o sistema parece estar em suspensão. Aplicativos que não exigem processamento crítico em segundo plano ou executados em computadores portáteis não devem habilitar o modo de exclusão porque impedem que o sistema conserve energia entrando em suspensão verdadeira.
Para habilitar o modo ausente, um aplicativo usa ES_AWAYMODE_REQUIRED e ES_CONTINUOUS; para desabilitar o modo de exclusão, um aplicativo chama SetThreadExecutionState com ES_CONTINUOUS e limpa ES_AWAYMODE_REQUIRED. Quando o modo ausente está habilitado, qualquer operação que colocaria o computador em suspensão o coloca no modo de suspensão. O computador parece estar em suspensão enquanto o sistema continua executando tarefas que não exigem entrada do usuário. O modo ausente não afeta o temporizador ocioso de suspensão; para impedir que o sistema entre em suspensão quando o temporizador expirar, um aplicativo também deve definir o valor ES_SYSTEM_REQUIRED .
A função SetThreadExecutionState não pode ser usada para impedir que o usuário insira o computador em suspensão. Os aplicativos devem respeitar que o usuário espera um determinado comportamento quando fecha a tampa em seu laptop ou pressiona o botão de energia.
Essa função não impede a execução do protetor de tela.
Exemplos
// 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);
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winbase.h (incluir Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |