Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
3-15417
kerkonst
2003-01-19 19:46
2003.02.06
DBRadioGroup отказывается работать


6-15794
Adrian_Copil_Minune
2002-12-13 11:25
2003.02.06
Общение между клиентом и сервером.


1-15682
ychnik
2003-01-27 14:00
2003.02.06
Перевод строки


1-15605
eLVik
2003-01-23 09:37
2003.02.06
Alignment


7-15944
Kaginava
2002-11-21 08:33
2003.02.06
как о стсдедить изменение текстового файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский