Используйте SetThreadExecutionState с приложением, которое еще не предотвращает спящий режим

В Windows 7 и 10 приложение Spotify не предотвращает выключение дисплея или переход системы в спящий режим (по крайней мере, на 3 компьютерах с Windows, которые я использую). Есть ли способ запустить приложение и включить функцию SetThreadExecutionState в этот поток, чтобы предотвратить спящий дисплей во время работы приложения? Или любая другая функция, которая будет достигать этого результата?

В настоящее время я запускаю и закрываю приложение с двумя отдельными файлами.bat, которые изменяют таймеры сна, но это довольно неуклюже, поэтому я бы предпочел подходящее приложение для этого.

1 ответ

Решение

Это решение 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 для изменения режима гибернации и т. Д.

Другие вопросы по тегам