Когда какое-то приложение хочет остановить засыпание компьютера оно оставляет системе запрос через функцию
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();