Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Sistemas operativos > Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 25-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Se me ocurre algo aunque no sé qué tan viable sea o si es lo óptimo.

En el programa que tú hagas comienzas tomando la hora apenas inicie (y el programa habrá que iniciarlo al comenzar Windows). Lo más cómodo es con

Código Delphi [-]
StartTime := Time();
StartTicks := GetTickCount();

GetTickCount te dá el número de milisegundos desde que inicia Windows.

Con una componente Timer checas cada x segundos el tiempo transcurrido

Código Delphi [-]
procedure TForm1.Timer1OnTimer(Sender: TObject);
var
  TicksElapsed: Cardinal;
  TimeElapsed: Cardinal;

begin
  TicksElapsed := GetTickCount() - StartTicks;
  TimeElapsed := MiliSecondsBetween(Time() - StartTime);

  if (Abs(TicksElapsed - TimeElapsed) > MinAllowed) then
    ShowMessage('Usted ha alterado la hora del sistema');
end;

Lo estoy escribiendo como se me ocurre y sin probar así que quizá algo no esté correcto pero la idea es esta:

Tu programa mide cada x tiempo el número de milisegundos que han transcurrido desde que inicio la sesión de Windows. Este valor debe coincidir (o acercarse mucho) al número de milisegundos entre la hora de inicio y la hora actual, y dejará de ser así si se cambia la hora de la pc.

Aquí estoy suponiendo que el valor de GetTickCount no se afecta al cambiar la hora de la máquina, es decir, que no depende del reloj de ésta. Creo que así es pero si no podrías usar algo como QueryPerformanceCount que se basa en los ciclos del procesador y no en el reloj.

Así, aun cuando no estás bloqueando propiamente el cambio de hora, sí podrías detectar si alguien la cambia.

// Saludos
Responder Con Cita
 



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


La franja horaria es GMT +2. Ahora son las 01:07:53.


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