簡體   English   中英

如何防止Windows顯示屏幕保護程序或從應用程序關閉電源?

[英]How can i prevent my windows from showing screensaver or powering down from my application?

我有一個數字標牌應用程序,要在計算機上優先運行。 我現在已經加入了win32事件(ES_DISPLAY_REQUIRED),以防止出現這種情況。 但是我想擺脫這個win32調用,因為我認為那是一個提升我的應用程序權限的程序,因此它需要以管理員身份運行。

有托管的方法可以做到這一點嗎? 我的意思是,媒體播放器等在觀看電影時如何防止睡眠/屏保?

您可以嘗試使用SetThreadExecutionState函數,如下所示:

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern uint SetThreadExecutionState(uint esFlags);
public const uint ES_CONTINUOUS = 0x80000000;
public const uint ES_SYSTEM_REQUIRED = 0x00000001;
public const uint ES_AWAYMODE_REQUIRED = 0x00000040;

public void AllowStandbyMode(bool allow)
{
    if (allow)
    {
        // Set state back to normal
        SetThreadExecutionState(ES_CONTINUOUS);
    }
    else
    {
        // Try this for vista, it will fail on XP
        if (SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED) == 0)
        {
            // Try XP variant as well just to make sure 
            SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED);
        }    
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM