![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Бьюсь над проблемой: как узнать, что скринсэйвер работает? [D6, Win95/98, NT4, WinXP]
Song © (2002-09-03 14:31:00)Отлавливаю WM_SYSCOOMAND c WParam=SC_SCREESAVE
по наступлению события включаю выполнениие нити (TThread), где постоянно опрашиваю:
SystemParametersInfo(SPI_GETSCREENSAVERRUNNING,0,@IsActive,0);
IF not IsActive then ...
При выключении хранителя экранаусловие не срабатывает!
Пробовал также через GetActiveWindow(). Почему-то на второй "итерации" TThread.Synchronize GetActiveWindow() возвращает ноль, хотя заставка запущена.
MSDN также советует через OpenDeskTop(), но.. это дремучая вещь, хотя и придётся сделать, если не получится.
Может у кого идеи есть?
Виктор Щербаков (2002-09-03 16:06:00) [21]Song © (03.09.02 15:54)
Ага. Она вообще без изменений оставляет значение по адресу @IsActive. Наверно Билл и его ребята оставили это на сладкое, а потом и вовсе забыли :)
Song (2002-09-03 15:54:00) [22]Не работает SPI_GETSCREENSAVERRUNNING в Windows98SE, хоть убей...
Виктор Щербаков (2002-09-03 15:15:00) [23]Вот здесь вроде что-то есть:
http://cw.net.gaming.ru/Russian/ARTS/Screen_Saver.html
Внук (2002-09-03 14:45:00) [24]Завтра, постараюсь не забыть, если не соврал, конечно :)
Song (2002-09-03 14:43:00) [25]О.. класс, а могёшь мне на почту скинуть? Надо...
Внук (2002-09-03 14:37:00) [26]Если я не брежу, на время работы ScreenSaver в реестре выставляется флажок... Надо будет поглядеть дома книгу