Как ждать, пока процесс не будет приостановлен / запущен - PullRequest
0 голосов
/ 17 ноября 2018

Я в настоящее время опрашиваю каждые 150 мс:

IsProcessSuspended(pid) {
For thread in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Thread WHERE ProcessHandle = " pid) {
    If (thread.ThreadWaitReason != 5) {
        Return True
    } Else {
        Return False
    }
}
}

Но это сильно напрягает мой процессор, и теперь мои вентиляторы работают на холостом ходу.

Я заметил, что WinWaitActive почти не использует ресурсы, и я хочу иметь что-то подобное для процессоров. Рассматриваемый процесс - WindowsInternal.ComposableShell.Experiences.TextInput.InputApp.exe. У меня была одна идея, которая была связана с потоком и после первого пропуска части ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Thread WHERE ProcessHandle = " pid), но оказалось, что потоки и их число меняются со временем, поэтому мне нужно знать, какой поток останется?

Я также нашел метод UWP , который, кажется, делает это эффективно.

...