2010-02-17 13 views
5

Ich schreibe eine Anwendung in C#, die einen Film abspielt. Ich muss herausfinden, wie man den Bildschirmschoner und die Energieoptionen mit C# deaktiviert.Deaktivieren von Bildschirmschoner und Energieoptionen in C#

Ich weiß, dass die Windows SDK API eine Funktion namens SetThreadExecutionState() hat, die dazu verwendet werden kann, aber ich weiß nicht, ob es eine bessere Möglichkeit gibt, es zu tun. Wenn nicht, wie integriere ich diese Funktion in C#?

+0

Was passiert, wenn Sie verhindert haben, dass die Bildschirmschoner-/Stromoptionen aktiviert werden (z. B. alle N Sekunden einen Tastendruck an das Betriebssystem senden)? – fre0n

+0

@icemanind: Hast du das herausgefunden? –

+0

Ja. Ich fand eine ziemlich nette Klasse in C# hier: http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx – Icemanind

Antwort

7

Nicht sicher, ob es eine bessere .NET-Lösung ist aber hier ist, wie Sie diese API verwenden:

Die erforderlichen usings:

using System.Runtime.InteropServices; 

Die 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); 

Und dann deaktivieren Bildschirmschoner von:

SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED); 

Finnaly Bildschirmschoner aktivieren, indem Sie den Ausführungszustand zurück auf den ursprünglichen Wert Reseting:

SetThreadExecutionState(ES_CONTINUOUS); 

Bitte beachte, dass ich eine der Fahnen zufällig in meinem Beispiel nur abgeholt. Sie müssten die richtigen Flags kombinieren, um das gewünschte Verhalten zu erhalten. Sie finden die 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); - arbeite perfekt auf win10 – user1005462

Verwandte Themen