экранная заставка

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

экранная заставка

Сообщение 13GHOST » 18.12.2006 (Пн) 20:34

как отследить момент включения экранной заставки??

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 20.12.2006 (Ср) 15:52

Предположу (не факт, что правильно), что так же как запуск любого другого процесса, например через WMI.
Salus populi suprema lex

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.12.2006 (Ср) 17:26

Отследить появление процесса с расширением scr?
Лучший способ понять что-то самому — объяснить это другому.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 20.12.2006 (Ср) 18:08

Смотри пример. Перевести из vbs-скрипта и модифицировать думаю не составить труда...
Пояснение: появляется MsgBox, когда запускается заставка sstext3d.scr.
Вложения
screen_hook.rar
(429 байт) Скачиваний: 105
Salus populi suprema lex

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 20.12.2006 (Ср) 20:52

как это сделать на примере включения любой заставки?

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 20.12.2006 (Ср) 20:56

немного поясню, а то вдруг вы не так поняли :), нужно отследаить когда виндоус сама включит экранную заставку, типа away режим, который настраивается в свойсвах экрана (вкладка "заставка")

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 21.12.2006 (Чт) 16:46

Ну ведь синтаксис SQL... Думал сам догадаешься для любой заставки: замени WHERE ProcessName="xxx.src" на WHERE ProcessName LIKE '%.scr' Попробуй теперь запустить этот файл и в момент, когда включится заставка вылезет сообщение.
Salus populi suprema lex

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 21.12.2006 (Чт) 17:15

а как это реализовать посредством обычного ВБ6?? :oops:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.12.2006 (Чт) 17:21

Тебе дали код.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 21.12.2006 (Чт) 17:22

дак он на vbскипте! как это будет выгядеть на вб6? :oops:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.12.2006 (Чт) 17:47

Точно так же?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 21.12.2006 (Чт) 17:53

GSerg писал(а):Точно так же?

Ну если просто его скопировать, то ничего не выйдет, чуть-чуть модифицировать надо...
Salus populi suprema lex

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 21.12.2006 (Чт) 18:00

дак вот я и хотел узнать - как??

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 21.12.2006 (Чт) 18:01

в работу тогда пиши, а не в этот форум :)

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 21.12.2006 (Чт) 18:02

Исключительно потому что у меня очень хорошее настроение в силу сразу нескольких обстоятельств... :D :D :D

Подключи Project->Preferences->Microsoft WMI Scripting V1.2 Library

Код: Выделить всё

Private WithEvents objSink As SWbemSink

Private Sub Form_Load()
    strComputer = "."
    Set objWMIService = GetObject( _
    "winmgmts:{impersonationLevel = Impersonate}!\\" _
    & strComputer & "\ROOT\CIMV2")
    Set objSink = New SWbemSink
    objWMIService.ExecNotificationQueryAsync objSink, _
    "SELECT * FROM Win32_ProcessStartTrace WHERE ProcessName LIKE '%.scr'"
End Sub

Private Sub objSink_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
    MsgBox "Alarm, Alarm!"
End Sub
Salus populi suprema lex

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 22.12.2006 (Пт) 8:02

большое спаибо! А нельзя ли это реализовать без подключения доплнительных библиотек? А выход из режима экранной застаки тоже также можно сделать?
Microsoft WMI Scripting V1.2 Library - где ее взять в стандартных она у меня не числится

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 22.12.2006 (Пт) 17:48

Какая операционная система?
Salus populi suprema lex

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 22.12.2006 (Пт) 19:29

winXP SP2

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 22.12.2006 (Пт) 19:52

Не верю что нет. Project->Preferences, там должна быть...
А вообще советую ознакомиться с WMI в MSDN и в других местах, что бы понять что это за "сторонняя библиотека" и с чем её едят.
Salus populi suprema lex

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 23.12.2006 (Сб) 10:07

аа... все разобрался...
только вот проблема: "alarm,alarm!" выскакивает даже тогда когда пользователь заходит в настройки экрана и выбирает вкладку "заставка" :?

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 23.12.2006 (Сб) 11:07

Первое, что приходит в голову - в процедуре objSink_OnObjectReady искать окно с заголовком "Свойства: Экран" (ф-я FindWindow) и если оно есть ничего не делать, если нет - выполнять определённые действия.
Salus populi suprema lex

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.12.2006 (Сб) 12:05

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 23.12.2006 (Сб) 12:45

:roll: Забыл, однако, про функцию SystemParametersInfo...
Salus populi suprema lex


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

    TopList