将SetThreadExecutionState与尚未阻止睡眠模式的应用程序一起使用

时间:2015-08-10 00:15:10

标签: c# windows-7 windows-10 thread-sleep spotify-desktop

在Windows 7& 10,Spotify应用程序不会阻止显示器关闭或系统进入睡眠模式(至少在我使用的3台Windows机器上)。有没有办法启动应用程序并将SetThreadExecutionState函数合并到该线程中,以防止显示器在应用程序运行时休眠?或任何其他能够实现这一结果的功能?

我目前使用两个单独的.bat文件启动并关闭应用程序,这些文件会更改睡眠定时器,但这非常笨重,所以我更喜欢使用正确的应用程序来执行此操作。

1 个答案:

答案 0 :(得分:0)

这个c#解决方案不使用SetThreadExecutionState函数,但是你提到你已经有了.bat文件来改变睡眠定时器,所以你可以将它们的命令复制到这里。 C#控制台应用程序:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var spotify = new Process();
            spotify.StartInfo.FileName = "Spotify.exe";
            spotify.StartInfo.Arguments = "-v -s -a";
            Process.Start("powercfg", "-CHANGE -monitor-timeout-ac 0");
            spotify.Start();
            spotify.WaitForExit();
            var exitCode = spotify.ExitCode;
            spotify.Close();
            Process.Start("powercfg", "-CHANGE -monitor-timeout-ac 1");
        }
    }
}

添加更多Process.Start行来改变hibernate等。