Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
ВнизКак отловить момент, когда Screen Saver закончил работу Найти похожие ветки
← →
DFR (2005-08-06 04:39) [0]По моему Win не посылает сообщение при этом?
← →
забыл (2005-08-06 07:46) [1]я вижу такой вариант:
определяем путь к scr зарегистрированного по умолчанию screensaverа, определяем запущен ли он в данный момент, получаем инфу по процессу. таймером пасем завершение или же попытаться waitforsingleobject...
P.S. не обессудьте, у мя щас раннее утро )
← →
Юрий Зотов © (2005-08-06 10:10) [2]SystemParametersInfo с параметром SPI_GETSCREENSAVERRUNNING позволяет определить, работает ли скринсейвер. Проверять можно, например, по таймеру.
← →
Eraser © (2005-08-06 13:30) [3]В доплнении к Юрий Зотов © (06.08.05 10:10) [2] почитай http://forum.sources.ru/index.php?showtopic=82713&st=15&
← →
DFR (2005-08-10 12:27) [4]Нужна еще помощь, по этой теме.
Процедуры и функция определяющие момент
начала и соответственно окончания
работы ScreenSaver`a, вроде работают
но есть вопросы.
Сначала код:
//Определяет окончание работы в OnTimer
function IsScreenSaverRun:Boolean;
var
Run:Bool;
begin
Run:=False;
SystemParametersInfo(SPI_GETSCREENSAVERRUNNING,0,@Run,2);
Result:= Run ;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
If not IsScreenSaverRun Then
begin
Timer1.Enabled:= False;
// действия...
end;
end;
//Определяет начало работы
procedure WMSysCommand(var Message: TWMSysCommand);message WM_SYSCOMMAND;
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
inherited;
If Message.CmdType and $FFF0 = SC_SCREENSAVE Then
begin
Timer1.Enabled:= True;
end;
end;
1.Почему не посылается сообщение WM_SYSCOMMAND если главное окно(TForm1) не активно, например минимизировано.
2.Если у Вас есть возможность проверить функцию IsScreenSaverRun в Win95, Nt и 2000.
Будет ли она работать на этих платформах.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c