SystemParametersInfo 를 참고 하시면 많은 도움이 되실 것 같습니다. Timer로 확인하시면 됩니다. 호출을 하실때 SPI_GETSCREENSAVEACTIVE 로 호출을 하시면 현재 시스템에 스크린세이버가 작동하게 세팅되어있는지를 알 수 있습니다. SPI_GETSCREENSAVERRUNNING 로 호출을 하시면 현재 스크린 세이버가 동작 중인이 아닌지를 알수 있습니다.
function GetScreenSaverRunning : boolean;
var
res : integer
begin
SystemParametersInfo(GETSCREENSAVERRUNNING , 0, @res, 0);
Result := boolean(res);
end;
function IsWorkstationLocked: Boolean;
var
hDesktop: HDESK;
begin
Result := False;
hDesktop := OpenDesktop('default', 0, False, DESKTOP_SWITCHDESKTOP);
if hDesktop <> 0 then
begin
Result := not SwitchDesktop(hDesktop);
CloseDesktop(hDesktop);
end;
end;
function GetScreenSaverRunning : boolean;
var
res : integer
begin
SystemParametersInfo(GETSCREENSAVERRUNNING , 0, @res, 0);
Result := boolean(res);
end;
온라인에서 코딩한것이라.. 간단한 버그는 있을 수 있습니다. ^^;