Morpheus, ну, не знаю. У меня под XP SP3 RU код из поста
#2 работает, как и заявлено
[в том числе и ручном запуске *.scr, и на просмотре
], проверялось с помощью Process Monitor. Да, и для начала работы подписчика оказалось достаточно только скомпилировать *.mof, не потребовалось ни рестарта службы, ни перезагрузки.
P.S. Как у Вас заработает, всё ж добавьте в оба запроса проверку на «/s»:
Код:

Query = "SELECT * FROM __InstanceCreationEvent WITHIN 5 "
"WHERE TargetInstance ISA \"Win32_Process\" "
"AND TargetInstance.Name LIKE \"%%.scr\" "
"AND TargetInstance.CommandLine LIKE \"%%.scr /s\"";
а то будет срабатывать даже на вкладке заставки свойств экрана.
P.P.S.
Цитата:
На мой взгляд, лучший вариант — написание самого хранителя экрана. То бишь, перевод своего кода с VBScript на, к примеру, AutoIt (дабы осталась поддержка OLE Automation + лицензионная чистота, потому про «большой» VB/VB.Net не поминаю) и добавление кода, реализующего минимальную обработку ключей запуска этого хранителя экрана («/c», «/s», «/p») и остановку по приходу события от клавиатуры/мыши. Ну, а в нём уже делай, что хочешь, хоть внутри себя, хоть внешним приложением — никто мешать не будет, ведь он сам и есть хранитель экрана. Примерно на такой основе сделан хранитель экрана Avast .
|