Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.06;
Скачать: CL | DM;

Вниз

Отключить экранную заставку   Найти похожие ветки 

 
Walker ©   (2002-11-27 07:00) [0]

Мне нужно на время запретить вызов экранной заставки (моя программа работает в полноэкранном режиме)

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, nil, 0); - не помогает

Как быть?


 
BoxTer ©   (2002-11-27 07:11) [1]

// Включение режима
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
// Выключение режима
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);
Кстати, SystemParametersInfo имеет еще кучу полезных ключей SPI_****, подробности см. в win32.hlp



 
Walker ©   (2002-11-27 07:33) [2]

BoxTer СЛЕПОЙ ЧТО ЛИ?????

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, nil, 0); - НЕ ПОМОГАЕТ


P.S. у меня тоже есть такая статья...


 
SottNick ©   (2002-11-27 07:58) [3]

2 Walker
1. SPI_SCREENSAVERRUNNING Windows 95 only: Used internally; applications should not use this flag.

2.
Dummy:=0;
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);
или
SystemParametersInfo( SPI_SCREENSAVERRUNNING, Word(True), @Dummy, 0);
фиг его знает. я не разбирался
3. HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive


 
Внук ©   (2002-11-27 09:12) [4]

>>SPI_SCREENSAVERRUNNING Windows 95 only: Used internally; applications should not use this flag.
Верно, и не надо его использовать, есть другой метод:

var Flag:Bool;
begin
Flag:=false;
SystemParametersInfo(SPI_GETSCREENSAVERRUNNING,0,@Flag,0);
if Flag then WriteLn(ResFile,"ScreenSaver is active")
...
end;

Но это подойдет, если нужно определить, запущена уже заставка, или нет.

А чтобы запретить запуск, нужно посмотреть ветку HKEY_CURRENT_USER\Control Panel\Desktop, как правильно сказали выше, только не параметр ScreenSaveActive (он, например, у меня равен 1, а заставка вообще отключена). Посмотрите, что меняется в этой ветке при назначении и снятии заставки :))

Кроме того, может быть, в данном случае достаточно просто поставить большое время ожидания там же. И позаботиться о том, чтобы изменения в реестре вступили в силу сразу же.


 
Walker ©   (2002-11-27 12:36) [5]

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


А нсчёт Windows 95 Only поясню, в этих хелпах, кот. поставляются с Delphi описываются всего две версии Windows - 95 и NT. И там где написано Win95 Only надо читатать так: "не для технологии NT" (т.е. Win 95 Only будет работать и под Win9x).


 
Walker ©   (2002-11-27 13:01) [6]

Спасибо всем... я тут немного помучался, вот что у меня получилось:

Предлагаю свой Unit для решения проблемы :)

unit ScreenSaveAtivater;

interface

procedure EnableScreenSave;
procedure DisableScreenSave;


implementation
uses
Windows;

var
ScreenSaverEnabled: Boolean;
ScreenSaveTimeOut: Integer;

procedure DisableScreenSaver;
begin
if ScreenSaverEnabled then
begin
SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, @ScreenSaveTimeOut, 0);
SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, 0, nil, 0);
ScreenSaverEnabled := False;
end;
end;

procedure EnableScreenSaver;
begin
if not ScreenSaverEnabled then
begin
SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, ScreenSaveTimeOut, nil, 0);
ScreenSaverEnabled := True;
end;
end;


initialization
SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, @ScreenSaveTimeOut, 0);
ScreenSaverEnabled := True;
finalization
EnableScreenSaver;
end.



Страницы: 1 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-15898
Kotka
2003-01-20 14:16
2003.02.06
Стоит посмотреть!


4-16013
Алексей Ким
2002-12-18 12:25
2003.02.06
ws_caption


1-15664
Nichka
2003-01-29 14:02
2003.02.06
Свойство-контейнер в классах


1-15561
karl21
2003-01-27 19:49
2003.02.06
А кто видел новую версию Pervasive.V8??


1-15538
borg
2003-01-28 13:38
2003.02.06
interbase