adressmoeistranici
@adressmoeistranici
Делатель

Как определить что комп воспроизводит видео или графику на экран?

У меня есть программа напоминалка отдохнуть глазам от экрана
Как для нее отследить что сейчас на экран воспроизводится видео или включено приложение на полный экран?
Наподобие как воспроизводишь видео в браузере и комп не отключает экран пока видео играет
  • Вопрос задан
  • 351 просмотр
Решения вопроса 1
WNeZRoS
@WNeZRoS
Когда какое-то приложение хочет остановить засыпание компьютера оно оставляет системе запрос через функцию PowerCreateRequest.
Получить эти запросы через публичный API похоже не возможно, т.к. этого API нет.
Но есть консольная утилита powercfg, если её запустить с ключом -REQUESTS она выдаёт список активных запросов. Для её работы нужны права администратора. Парсить её вывод сложно из-за локализованных строк, но для утилиты для себя это не проблема.

Когда запущено видео в хроме она вывела мне это:
DISPLAY:
[PROCESS] \Device\HarddiskVolume2\Program Files (x86)\Google\Chrome\Application\chrome.exe
Playing video

SYSTEM:
[DRIVER] Realtek High Definition Audio (HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_1458A002&REV_1003\4&3828eb94&0&0201)
Аудиопоток уже используется.
[PROCESS] \Device\HarddiskVolume2\Program Files (x86)\Google\Chrome\Application\chrome.exe
Playing audio

AWAYMODE:
Нет.


Из C# этот текст можно получить так:
var processStartInfo = new ProcessStartInfo("powercfg.exe", "-REQUESTS")
{
    UseShellExecute = false,
    RedirectStandardOutput = true
};

var process = Process.Start(processStartInfo);
var data = process.StandardOutput.ReadToEnd();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
15432
@15432
Системный программист ^_^
Если совсем-совсем жестокий путь, то по количеству изменившихся блоков экрана

https://docs.microsoft.com/en-us/windows/desktop/a...

https://docs.microsoft.com/en-us/windows/desktop/a...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы