![]() |
Отловить простой системы и выход из него
Даже не знаю с какого боку зайти уже. Что требуется:
При простое = 600s (в этот момент гасится монитор) - запуск батника. При выходе из простоя - запуск другого батника. Пробовали реализовать это с помощью коллективного разума средствами системы - не вышло. Т.е. если бы что-то писалось в журнал при, допустим, гашении и включении монитора, то можно было бы завесить на это событие задание в планировщике, но ничего не пишется... Удалось реализовать только так: в св-вах заставки ставим время и флажок "Начинать с экрана входа в систему", в этом случае происходит блокировка, а на блокировку/разблокировку легко назначается нужное задание в планировщике. Но это не удобно, т.к. надо выбирать учётную запись при разблокировке. Под простоем понимается отсутствие нажатий на клавиши, при любой загруженности процессора и HDD, Любые идеи? ОС: Windows 7, на всякий случай. |
Morpheus, как вариант - сделать привязку к событию вкл./выкл. хранителя экрана статья:
Running a Program from the Command Line Based on an Event, MOF-файл: Код:
#pragma namespace ("\\\\.\\Root\\subscription") P.S. Windows 7 под рукой нет, проверял на 2003 |
amel27, это на С++? Боюсь, что не имея даже базовых знаний С++, это для меня сложновато будет.
Проще варианты возможны? |
Morpheus, подошел со стороны заставки...
How Can I Log the Start Time and the End Time of the Screensaver? http://blogs.technet.com/b/heyscript...reensaver.aspx Если можно отследить время запуска и остановки заставки, то можно и событие на это повесить... если знать WMI :) |
Цитата:
Цитата:
|
Vadikan, amel27, спасибо! Пробую разобраться, вопросы будут возникать, наверняка :)
|
По-хорошему, надо бы ещё учитывать командную строку запуска *.scr, точнее, параметры его запуска То бишь, желательно бы добавить в MOF в условие ещё один предикат LIKE на параметр « /s».
|
Голова уже трещит... Помогайте, плз! :)
|
Morpheus,
вопрос: а зачем вам вообще скринсэйвер? Зачем вы свою задачу к нему подвязываете? Без него нельзя никак обойтись? |
zonderz, а с какой целью интересуетесь?
Цитата:
Или имеется в виду, что будет в батниках? Сейчас задачи одни (что-то подгрузить, что-то выгрузить), какие будут завтра, пока не знаю. Но знать, как это делается полезно в любом случае. |
Цитата:
|
Morpheus,
Цитата:
вас устроит такое? : запускаете прогу (висит в трее), если клавой или мышкой не двигали 10 минут (можно назначить время) система уходит в режим простоя (тухнет монитор), предварительно запустив 1 командный файл (можно назначить путь и имя программы). Далее после нажатия клавиши или движения мышью система "просыпается", запуская 2 командный файл. и т.д . до бесконечности |
Iska, содержимое на месте, заставку включал, машину перегружал - реакция ноль.
zonderz, вполне, но надо пробовать. Цитата:
Цитата:
|
|
zonderz, уже ближе к делу :)
Через 20 сек. запускается первая команда, монитор не отключается, при движении мыши запускается вторая команда. Хотелось бы: чтобы монитор всё-таки отключался (хотя ладно, это я прописал в первом батнике) и чтобы она пряталась в трей. Кнопку "Exit" можно сделать побольше, а то не весь экран занимает :) |
Morpheus, ну, не знаю. У меня под XP SP3 RU код из поста #2 работает, как и заявлено [в том числе и ручном запуске *.scr, и на просмотре :)], проверялось с помощью Process Monitor. Да, и для начала работы подписчика оказалось достаточно только скомпилировать *.mof, не потребовалось ни рестарта службы, ни перезагрузки.
P.S. Как у Вас заработает, всё ж добавьте в оба запроса проверку на «/s»: Код:
Query = "SELECT * FROM __InstanceCreationEvent WITHIN 5 " P.P.S. Цитата:
|
Iska, ок, спасибо! Добавлю, если заработает :) Я то в этом совсем ни бум-бум...
М.б. в этом причина неработоспособности? Цитата:
|
Вложений: 1
Цитата:
Цитата:
отключается. но в виртуалке не отключится :)) добавил паузу при выходе из сна и собственно сон (не просто отключение моника) updated: сработало даже в виртуали! моник не отключился :)))))) но виртуалка ушла в шлубокий сон и потом все как по программе... удачи (за сим откланяюсь - у вас исходники) |
zonderz, спасибо! В трей её никак?
|
|
zonderz, спасибо!
Цитата:
|
Morpheus, проверил дома - на Win7 работает, компилировал в режиме админа, текст батников:
Код:
Echo ------------>>%~n0.log Цитата:
MOF-файл для отключения мониторинга/удаления объектов, созданных MOF из поста #2: Код:
#pragma namespace ("\\\\.\\Root\\subscription") |
Цитата:
|
amel27, спасибо!
Цитата:
Код:
cmd /c notepad |
Morpheus, notepad запускается под системной учеткой и поэтому не имеет возможности вывести своё окно на рабочий стол пользователя... перехват событий через WMI предназначен скорей для административных задач, т.е. приложений, не требующих взаимодействия с пользователем (скрипты, консольные приложения и т.п.)
|
amel27, ок, понятно, спасибо! А можно ли сделать вместо запуска батника (или из этого батника), чтобы просто писалось какое-нибудь событие в журнал?
zonderz, можете исходники последнего варианта выложить? |
Вложений: 1
O.K.
|
zonderz, спасибо, пробую разобраться.
|
Цитата:
|
Iska, спасибо! Эхх, как же тяжело, когда не совсем представляешь, что делаешь :)
Подскажите, плз, где косяк? (Только не говорите, что это один большой косяк :)) Код:
#pragma namespace ("\\\\.\\Root\\subscription") |
Цитата:
Цитата:
Код:
Query = "SELECT * FROM __InstanceCreationEvent WITHIN 5 " Код:
Query = "SELECT * FROM __InstanceDeletionEvent WITHIN 5 " |
amel27, т.е. так должно быть?
Код:
#pragma namespace ("\\\\.\\Root\\subscription") |
Цитата:
|
amel27, логи создаются, а событие в журнале найти не могу.
UPD: нашел, из-за чего не работал код из #30 - EventType = 3 не пишется, если = 1 или 4 - пишется. Теперь другой проблем - событие Start создаётся 2 раза и одновременно пишется Stop. Не подскажете? |
Наверное, потому что нет такого значения EventType:
|
Цитата:
Остаётся разобраться с дублированием событий. |
Цитата:
P.S. если при компиляции встречается ошибка (несуществующий объект), то работа MofComp аварийно прекращается (т.е. для корректного удаления должны существовать ВСЕ описанные в MOF-файле объекты) - по этой причине после удаления могут оставаться "хвосты" P.P.S есть удобные утилиты для визуальной работы с событиями (WMI Administrative Tools), но официально заявлена только поддержка XP :( |
amel27, хм, любопытно. Проверил на хосте вместо виртуалки, 1 старт и 1 стоп. М.б. есть способ вывести всех потребителей, для всех фильтров, в командной строке? В WMI Administrative Tools пустота, ставил в режиме совместимости, от админа, в профиль.
Удалил-создал-удалил-создал-удалил-создал с новыми именами - всё пришло в норму. Теперь такой вопрос: Registering for Power Events (Windows) Цитата:
Хочется отвязаться от заставки, которую я не использую, и привязаться к отключению/включению моника. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Доброго времени суток, форумчане!
Подскажите что не так делаю. В корне диска С создал папку TEST наполнил ее своими scrstart.cmd и scrstop.cmd Код с сообщения №2 вставляю в блокнот сохраняю как SCR.MOF и бросаю в папку пользователя иначе компилятор не видит файл. Запускаю командную строку ввожу команду MOFComp SCR.MOF Microsoft Windows [Version 6.3.9600] (c) Корпорация Майкрософт (Microsoft Corporation), 2013. Все права защищены. C:\Users\-->MOFComp SCR.MOF Компилятор MOF (Майкрософт) версии 6.3.9600.16384 (c) Корпорация Майкрософт, 1997-2006. Все права защищены. Идет анализ MOF-файла: SCR.MOF MOF-файл успешно проанализирован Хранение данных в репозитории... Произошла ошибка при обработке элемента 1, определенного в строках: 7 - 12, в фа йле SCR.MOF: Ошибка: 0x80041003; оборудование: WMI Описание: Отказано в доступе Компилятор вернул ошибку 0x80041003 C:\Users\--> Где косяк не пойму. Вин 8.1*64 |
О как! Оказывается командную строку надо запускать от админки, век живи век учись. (ПКМ по панели пуск)
Теперь выдало вот такое сообщение: C:\Windows\system32>MOFComp C:\TEST\SCR.MOF Компилятор MOF (Майкрософт) версии 6.3.9600.16384 (c) Корпорация Майкрософт, 1997-2006. Все права защищены. Идет анализ MOF-файла: C:\TEST\SCR.MOF MOF-файл успешно проанализирован Хранение данных в репозитории... ВНИМАНИЕ! Файл C:\TEST\SCR.MOF не содержит #PRAGMA AUTORECOVER. Если репозиторий WMI в дальнейшем будет перестроен, в новый репозиторий WMI не б удет включено содержимое этого MOF-файла. Чтобы включить этот файл при автоматической перестройке репозитория WMI, в перво й строке MOF-файла необходимо разместить инструкцию #PRAGMA AUTORECOVER. Готово! C:\Windows\system32> И что надо добавлять #PRAGMA AUTORECOVER? |
Е мое, а ведь это можно решить простым планировщиком заданий в виндовс (8.1) на других не проверял. Все работает просто прекрасно!
1.Создать задачу. 2. В "тригерах" при простое системы. 3. В "действиях" указать запуск программы (путь к проге), а в атрибуты вписать путь к видео. 4. В "условиях" выбрал: Запуск при простое, останавливать при выходе из простоя, перезапускать при возобновлении простоя. Вот и ВСЕ!!!!!!! |
Время: 11:24. |
Время: 11:24.
© OSzone.net 2001-