• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#如何阻止计算机进入屏保或者省电模式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

有时候我们希望阻止计算机进入屏保或者省电模式,比如计算机进入了屏保或者省电模式后可能会导致automation test失败,或者我们就是想在自己出去玩的时候让屏幕一直亮着让老板以为自己刚出去:)

那这篇文章介绍一下如何用C#程序阻止计算机进入屏保或者省电模式。

要实现这个功能可以使用下面两个API。

1. SetThreadExecutionState

通过这个API应用程序可以通知系统它正在运行,从而阻止计算机进入屏保.

实例代码如下:

using System;
using System.Runtime.InteropServices;

namespace NoSleepMonitor
{
    static internal class NoSleepWay1
    {
       [Flags()]
        public enum EXECUTION_STATE : uint //Determine Monitor State
        {
            ES_AWAYMODE_REQUIRED = 0x00000040,
            ES_CONTINUOUS = 0x80000000,
            ES_DISPLAY_REQUIRED = 0x00000002,
            ES_SYSTEM_REQUIRED = 0x00000001
            // Legacy flag, should not be used.
            // ES_USER_PRESENT = 0x00000004
        }

        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);

        public static void Sleep()
        {
            SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS);
        }

        public static void NoSleep()
        {
            SetThreadExecutionState(EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_CONTINUOUS);
        }
    }
}

2. SystemParametersInfo

通过这个API应用程序可以设置系统参数,其中可以设置屏保的参数,从而取消屏保.

示例代码如下:

using System.Runtime.InteropServices;


namespace NoSleepMonitor
{
    public class NoSleepWay2
    {
        [DllImport("user32", EntryPoint = "SystemParametersInfo", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);

        private const int SPI_SETSCREENSAVEACTIVE = 0x0011;

        public static void NoSleep()
        {
            SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, "0", 0);
        }
        public static void Sleep()
        {
            SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, "0", 0);
        }
    }
}

 

我在github上放了一个wpf的小程序,包含了上述代码.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#sharpsvn客户端开发总结发布时间:2022-07-10
下一篇:
C#常用控件介绍发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap