注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

C# 编程阻止系统进入休眠状态和保持显示器常亮(阻止关闭电源)  

2014-07-25 23:18:50|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

直接修改系统的电源管理,步骤太多了,改来改去烦死了。还是简单的点一次方便。

就在网上找一个 编程阻止系统休眠的办法:

http://msdn.microsoft.com/en-us/library/aa373208%28VS.85%29.aspx

微软有一个api函数SetThreadExecutionState,可以设置系统为amay mode/

保持working state/阻止显示器关闭 



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.Runtime.InteropServices;

namespace PreventSystemSleep
{

public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
notifyIcon1.BalloonTipText = "阻止系统进入休眠状态";
notifyIcon1.BalloonTipTitle = "阻止系统进入休眠状态";
notifyIcon1.Visible = true;
notifyIcon1.Icon = this.Icon;
notifyIcon1.ContextMenuStrip = contextMenuStrip1;
this.Opacity = 0;

this.PreventSleepToolStripMenuItem.Checked = true;
this.AllowSleepToolStripMenuItem.Checked = false;
}

private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
//这样显示菜单失去焦点不会自动隐藏,要直接设置 notifyIcon1.ContextMenuStrip才行
// contextMenuStrip1.Show(Cursor.Position);
}

private void PreventSleepClick(object sender, EventArgs e)
{
this.PreventSleepToolStripMenuItem.Checked = true;
this.AllowSleepToolStripMenuItem.Checked = false;

kernel32_dll.SetThreadExecutionState(kernel32_dll.ES_CONTINUOUS | kernel32_dll.ES_SYSTEM_REQUIRED | kernel32_dll.ES_AWAYMODE_REQUIRED);
}

private void ExitClick(object sender, EventArgs e)
{
kernel32_dll.SetThreadExecutionState(kernel32_dll.ES_CONTINUOUS);
this.Close();
}

private void AllowSleepClick(object sender, EventArgs e)
{
this.PreventSleepToolStripMenuItem.Checked = false;
this.AllowSleepToolStripMenuItem.Checked = true;
kernel32_dll.SetThreadExecutionState(kernel32_dll.ES_CONTINUOUS);
}

private void Form1_Activated(object sender, EventArgs e)
{
this.Hide();
}

}

internal static class kernel32_dll
{
// http://msdn.microsoft.com/en-us/library/aa373208%28VS.85%29.aspx
// Import SetThreadExecutionState Win32 API and necessary flags
[DllImport("kernel32.dll")]
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;
}

}



  评论这张
 
阅读(726)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017