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 Significado
ES_AWAYMODE_REQUIRED
0x00000040
Habilita o modo ausente. Esse valor deve ser especificado com ES_CONTINUOUS.

O modo ausente deve ser usado apenas por aplicativos de gravação de mídia e distribuição de mídia que devem executar processamento crítico em segundo plano em computadores desktop enquanto o computador parece estar em suspensão. Consulte Observações.

ES_CONTINUOUS
0x80000000
Informa ao sistema que o estado que está sendo definido deve permanecer em vigor até que a próxima chamada que usa ES_CONTINUOUS e um dos outros sinalizadores de estado seja limpo.
ES_DISPLAY_REQUIRED
0x00000002
Força a exibição a ser ativada redefinindo o temporizador ocioso de exibição.
ES_SYSTEM_REQUIRED
0x00000001
Força o sistema a estar no estado de trabalho redefinindo o temporizador ocioso do sistema.
ES_USER_PRESENT
0x00000004
Não há suporte para esse valor. Se ES_USER_PRESENT for combinado com outros valores esFlags , a chamada falhará e nenhum dos estados especificados será definido.

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

Confira também

Funções de gerenciamento de energia

SetSuspendState

Setsystempowerstate

WM_POWERBROADCAST