![](/img/trans.png)
[英]How can I prevent my C# application from opening new windows during context menu?
[英]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.