2010-02-17 10 views
5

Estoy escribiendo una aplicación en C# que reproduce una película. Necesito descubrir cómo desactivar el protector de pantalla y las opciones de energía usando C#.Deshabilitar el protector de pantalla y las opciones de energía en C#

Sé que Windows SDK API tiene una función llamada SetThreadExecutionState() que se puede utilizar para hacer esto, sin embargo, no sé si hay una mejor manera de hacerlo. Si no, ¿cómo incorporo esta función a C#?

+0

¿Qué sucede si solo impide que se activen las opciones de protector de pantalla/alimentación (por ejemplo, enviar una pulsación de tecla al sistema operativo cada N segundos)? – fre0n

+0

@icemanind: ¿Te diste cuenta de esto? –

+0

Sí. Encontré una clase bastante agradable en C# aquí: http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx – Icemanind

Respuesta

7

No estoy seguro si hay una solución mejor .NET pero aquí es cómo se puede utilizar la API de que:

Los usings requeridos:

using System.Runtime.InteropServices; 

El P/Invoke:

public const uint ES_CONTINUOUS = 0x80000000; 
public const uint ES_SYSTEM_REQUIRED = 0x00000001; 
public const uint ES_DISPLAY_REQUIRED = 0x00000002; 

[DllImport("kernel32.dll", SetLastError = true)] 
public static extern uint SetThreadExecutionState([In] uint esFlags); 

Y luego desactivar el protector de pantalla por:

SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED); 

permiten Finnaly protector de pantalla por el restablecimiento del estado de ejecución de nuevo a valor original:

SetThreadExecutionState(ES_CONTINUOUS); 

nota que acaba de recoger una de las banderas al azar en mi ejemplo. Debería combinar los indicadores correctos para obtener el comportamiento específico que desea. Encontrará el description of flags on MSDN.

+0

http://stackoverflow.com/questions/241222/need-to-disable-the-screen-saver-screen-locking-in-windows-c-net – user1005462

+2

SetThreadExecutionState (EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_SYSTEM_REQUIRED); - trabajo perfecto en win10 – user1005462

Cuestiones relacionadas