Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Saber si el salvapantallas de windows está ejecutandose

Buenos días,

me gustaría saber si se puede conocer el estado del salvapantallas de windows, si se está ejecutando o no. Esto lo quiero para ahorrar espacio en un programa que captura la pantalla del escritorio cada cierto tiempo, en caso de que estuviera el salvapantallas ejecutandose no guardaría la captura y pondría un texto indicando que está el salvapantallas.

Gracias y saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #2  
Antiguo 15-11-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Buscando en DuckDuckGo he encontrado que existe una función del API llamada SystemParametersInfo, que al parecer devuelve información de estado del sistema, entre otras cosas el estado del salvapantallas.

Por desgracia sólo encuentro información para VisualBasic, pero parece prometedora. Mira aquí.

De todas formas, si no recuerdo mal de cuando programaba en C para Windows 3.1, el sistema enviaba un mensaje antes de activar el salvapantallas, aunque creo que era un mensaje genérico (tipo WM_PAUSE o WM_BACKGROUND o algo así) y no específico de salvapantallas.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 15-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
He encontrado esto en... parece basic , pero de ahí se puede saber ya hacerlo en delphi
Código SQL [-]
Private Sub Form_Load()     
  Dim bActive As Boolean          ' Find out if screen saver is active, and display a suitable message.     
  SystemParametersInfo SPI_GETSCREENSAVEACTIVE, 0, bActive, False     
  If bActive Then         
    Me.Caption = "Screen saver is active"     
  Else         
    Me.Caption = "Screen saver is not active"     
  End If 
End Sub
Responder Con Cita
  #4  
Antiguo 15-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

gracias a los dos por la información, voy a ponerme a investigar un poco a ver si saco petroleo. Ya os contaré.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #5  
Antiguo 15-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

estoy haciendo pruebas y por lo visto lo que se puede saber es si el protector de pantallas esta activo, que no es lo mismo que ejecutandose, o inactivo, quiere decir que si yo tengo desactivado el protector me devuelve false y si lo tengo activado me devuelve true pero no me indica si está corriendo en ese momento. Bueno seguiremos mirando a ver que encuentro.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #6  
Antiguo 15-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cierto, aquí está el parámetro para saber si está corriendo:

Código SQL [-]
Private Sub Timer1_Timer()     
  Dim bRunning As Boolean      ' Beep if the screen saver is running.     
  SystemParametersInfo SPI_GETSCREENSAVERRUNNING, 0, bRunning, False     
  If bRunning Then         
    Beep     
  End If 
End Sub
Responder Con Cita
  #7  
Antiguo 15-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Buenas,

al final he visto otro parametro que es el que indica si el salvapantallas está corriendo. El código queda así.

Código Delphi [-]
Procedure ScreenSaverIsRun();
var
aire:boolean;
begin
SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0,@aire, 0);
  if aire then
    begin
      label1.Caption:='Salvapantallas corriendo';
    end
  else
    begin
      label1.Caption:='No se está ejecutando el salvapantallas';
    end;
end;

Saludos y gracias por vuestro tiempo.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #8  
Antiguo 15-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Vaya,

tenía el hilo abierto y no he refrescado para darme cuenta de que habías sido más rápido que yo Casimiro, de nuevo gracias por tu tiempo.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber si se esta ejecutando windows o linux vivamotos C++ Builder 4 27-06-2011 14:26:47
Como saber si un proceso esta ejecutandose conociendo su nombre? JuanErasmo C++ Builder 1 20-01-2006 17:22:40
Cómo comprobar si excel está ejecutándose desde el programa¿? AFilth Varios 5 19-09-2005 12:59:43
Saber windows esta copiando o elimniando archivo mauriciofox API de Windows 0 25-02-2005 06:21:14
esta ejecutandose una aplicacion en NT? jmbarrio API de Windows 5 13-01-2005 11:49:04


La franja horaria es GMT +2. Ahora son las 15:41:13.


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
Copyright 1996-2007 Club Delphi