Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Activar el salvapantallas (https://www.clubdelphi.com/foros/showthread.php?t=61592)

azulin 13-11-2008 15:49:10

Activar el salvapantallas
 
Hola a todos

Estoy desarrollando una aplicación Kiosko con Turbo Delphi, y requiere que cuando esté en modo standby, reproduzca una animación (video, flash, lo que se pueda) a pantalla completa. El flujo del Kiosko, en cuanto a pantallas, sería algo así:

MENU (standby) --> CONTENIDO --> DESPEDIDA --> MENU (standby)

Básicamente se trata de poder controlar el salvapantallas desde delphi. La idea sería poder arrancarlo por código antes de mostrar la pantalla MENU.

Mi duda es: ¿es posible lanzar (no activar) el salvapantallas desde código?

No se si me he explicado bien...

Un saludo y gracias por vuestra ayuda!

dec 13-11-2008 16:07:59

Hola,

De Zarko Gajic:

Código Delphi [-]
function ActivateScreenSaver
         (Activate: boolean): boolean;
var IntActive: byte;
begin
   if Activate then
     IntActive := 1
   else
     IntActive := 0;

   Result := SystemParametersInfo
             (SPI_SETSCREENSAVEACTIVE, IntActive,
              nil, 0) ;
end;

azulin 13-11-2008 16:39:08

Estoy intentando ejecutar ese código pero no consigo que funcione...

Código:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ActivateScreenSaver(true);
end;

La idea es que al darle al botón arranque el salvapantallas.

Lepe 13-11-2008 17:14:14

Intenta con:
Código:

procedure TForm1.Button1Click(Sender: TObject);
begin
  sleep(700);
  ActivateScreenSaver(true);
end;

lo mandas actiar, pero aún estás soltando el ratón, y probablemente moviéndolo unos pixels, por tanto ni siquiera aparece.

Me suele pasar al apagar el monitor.

Saludos

azulin 14-11-2008 12:44:23

Sigo sin conseguirlo usando Sleep ...

¿estoy haciendo algo mal? ¿alguna idea?

Muchisimas gracias!

dec 14-11-2008 13:10:09

Hola,

Creo que metí la pata. La función anterior sirve para habilitar o deshabilitar el activado automático del salvapantallas, pero, no para activarlo. He encontrado aquí lo siguiente, que, puede usarse para activar el salvapantallas que esté utilizándose en el sistema:

Código Delphi [-]
  SendMessage(GetDesktopWindow(),
   WM_SYSCOMMAND, SC_SCREENSAVE, 0);

En la ayuda de la función "SystemParameterInfo()" del API de Windows, encontrarás también que puedes "hacer cosas" con el salvapantallas. En fin, a ver si ahora te apaña.

azulin 14-11-2008 13:21:03

Ahora sí! Perfecto!

Muchísimas gracias!


La franja horaria es GMT +2. Ahora son las 13:27:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi