Disabling Screen Saver and Power Options in C#

前端 未结 1 1225
别那么骄傲
别那么骄傲 2020-12-01 11:17

I am writing an application in C# that plays a movie. I need to figure out how to disable the screen saver and power options using C#.

I know the Windows SDK API ha

相关标签:
1条回答
  • 2020-12-01 12:07

    Not sure if there is a better .NET solution but here is how you could use that API:

    The required usings:

    using System.Runtime.InteropServices;
    

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

    And then disable screensaver by:

    SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED);
    

    Finnaly enable screensaver by reseting the execution state back to original value:

    SetThreadExecutionState(ES_CONTINUOUS);
    

    Note that I just picked one of the flags at random in my example. You'd need to combine the correct flags to get the specific behavior you desire. You will find the description of flags on MSDN.

    0 讨论(0)
提交回复
热议问题