Proshaa
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору VVL99 Цитата: Я так понимаю, на скриншоте ошибка установки скринсейвера, видимо система ждёт подтверждения действия, | окно вылазит при срабатывании скринсейвера. на заднем плане видно, что был несохранённый текст в блокноте. именно об него "споткнулось" выключение. а надпись, что якобы причина - в установке - это потому, что была нажата кнопка "просмотр", а не сработка по времени бездействия. параметр -f(orse) - проигнорирует все незакрытые документы/незавершенные действия и закроет все программы, даже зависшие. bomzz там простор для фантазии )) может временно создает запрещающую политику, может - работает с реестром, например так: Цитата: В реестре есть ветка HKEY_CURRENT_USER\Control Panel\Desktop, а в ней ключ SCRNSAVE.EXE. Достаточно при запуске программы запомнить содержимое этого ключа и сделать его пустым, а при завершении работы программы вернуть содержимое ключа обратно | но тут могут вылезти проблемы с правами. самый корректный документированный способ менять эти настройки: Код: private const int WM_SYSCOMMAND = 0x112; private const int SC_SCREENSAVE = 0xF140; private const int SC_MONITORPOWER = 0xF170; protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_SYSCOMMAND: switch ((int)m.WParam) { case SC_MONITORPOWER: return; case SC_SCREENSAVE: return; } break; } base.WndProc(ref m); } | разумеется, перед return'ами - вставить код, выполняющий нужное действие
---------- Если ссылки в моих постах не работают - ищите здесь |
|