Delphi - codigo entero de la pagina de la pregunta anterior

 
Vista:

codigo entero de la pagina de la pregunta anterior

Publicado por Tino (18 intervenciones) el 11/09/2001 13:26:33
Se me corto el pedozo de tocho que estaba poniendo antes , vueno es esto:
#include <windows.h>
#include <stdio.h>

BOOL IsScreenSaverRunning( void );

int
__cdecl
main(
void
)
{
if(IsScreenSaverRunning()) {
printf("Screen saver is running!\n");
}
else {
printf("Screen saver is NOT running!\n");
}

return 0;
}

//
// returns TRUE if a screen saver is running, or FALSE if not.
//

BOOL
IsScreenSaverRunning(
void
)
{
HDESK hDesktop;

//
// try to open the desktop that the screen saver runs on. This
// desktop is created on the fly by winlogon, so it only exists
// when a screen saver is invoked.
//

hDesktop = OpenDesktop(
TEXT("screen-saver"), // desktop name where screen saver runs
0,
FALSE,
MAXIMUM_ALLOWED // open for all possible access
);

if(hDesktop == NULL) {

//
// if the call fails due to access denied, the screen saver
// is running because the specified desktop exists - we just
// don't have any access.
//

if(GetLastError() == ERROR_ACCESS_DENIED) return TRUE;

//
// otherwise, indicate the screen saver isn't
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:codigo entero de la pagina de la pregunta anter

Publicado por Ernesto D'Spirito (706 intervenciones) el 11/09/2001 16:54:03
Quedó una parte sin entrar en el código en C del salvapantallas... De todos modos, por lo que decía de la explicación al principio, creo que sería entonces así:

function IsScreenSaverRunning: boolean;
// Para Windows NT anterior a NT 5
var
hDesktop: HDESK;
begin
// Intentamos abrir el escritorio "screen-saver"
hDesktop := OpenDesktop('screen-saver', 0, False, MAXIMUM_ALLOWED);
if hDesktop = 0 then
// No se pudo abrir el escritorio. Analizamos la causa.
if GetLastError() = ERROR_ACCESS_DENIED then
// Si es por acceso acceso, es porque el salvapantallas
// lo tiene, y por lo tanto está corriendo.
Result := True
else
// Si es por otra razón, el salvapantallas no está
Result := False
else begin
// Se pudo abrir el escritorio, lo que significa que el
// salvapantallas no está corriendo.
CloseDesktop(hDesktop); // Cerramos el escritorio
Result := False;
end;
end;

Avísame si funciona.

Ernesto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:codigo entero de la pagina de la pregunta anter

Publicado por Tino (18 intervenciones) el 12/09/2001 12:17:43
Hola de nuevo ,tengo una duda, en donde pone 'screen-saver' en:
hDesktop := OpenDesktop('screen-saver', 0, False, MAXIMUM_ALLOWED);
hay que cambiar el screen-saver por algo??
de todas maneras yo lo tengo asi y no sale:

procedure TForm1.Timer1Timer(Sender: TObject);
function IsScreenSaverRunning: boolean;
// Para Windows NT anterior a NT 5
var
hDesktop: HDESK;
begin
// Intentamos abrir el escritorio "screen-saver"
hDesktop := OpenDesktop('screen-saver', 0, False, MAXIMUM_ALLOWED);
if hDesktop = 0 then
// No se pudo abrir el escritorio. Analizamos la causa.
if GetLastError() = ERROR_ACCESS_DENIED then
// Si es por acceso acceso, es porque el salvapantallas
// lo tiene, y por lo tanto está corriendo.
Result := True
else
// Si es por otra razón, el salvapantallas no está
Result := False
else begin
// Se pudo abrir el escritorio, lo que significa que el
// salvapantallas no está corriendo.
CloseDesktop(hDesktop); // Cerramos el escritorio
Result := False;
end;
end;
begin
if IsScreenSaverRunning then //esta lanzado
else // No esta lanzado
end;

La pagina donde lo encontre ,por si quiers verla entera es :
http://support.microsoft.com/support/kb/articles/Q150/7/85.ASP

Espero que te llegara lo que me pediste..sino dimelo.
Un saludo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:codigo entero de la pagina de la pregunta anter

Publicado por Ernesto D'Spirito (1 intervención) el 12/09/2001 12:36:17
Acabo de ver el artículo completo siguiente el enlace que me has dado.

http://support.microsoft.com/support/kb/articles/Q150/7/85.ASP

Ahora con la información de la parte de abajo que se había cortado, ya sé como es:

function IsScreenSaverRunning: boolean;
// Para Windows NT anterior a NT 5
var
hDesktop: HDESK;
begin
// Intentamos abrir el escritorio "screen-saver"
hDesktop := OpenDesktop('screen-saver', 0, False,
MAXIMUM_ALLOWED);
if hDesktop = 0 then
// No se pudo abrir el escritorio. Analizamos la causa.
if GetLastError() = ERROR_ACCESS_DENIED then
// Si es por acceso acceso, es porque el salvapantallas
// lo tiene, y por lo tanto está corriendo.
Result := True
else
// Si es por otra razón, el salvapantallas no está
Result := False
else begin
// Se pudo abrir el escritorio, lo que significa que el
// salvapantallas está corriendo.
CloseDesktop(hDesktop); // Cerramos el escritorio
Result := True;
end;
end;

Espero que ahora sí te funcione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:codigo entero de la pagina de la pregunta anter

Publicado por Tino (18 intervenciones) el 13/09/2001 11:16:26
Prueba superada, muchisimas gracias por haberte molestado tanto ,
y esperemos que a mis jefes no les de por linux ahora (:
Un saludo ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar