Actualizar la hora en el PC

Function PonerEnHora(Fecha:TDateTime):Boolean;
Var Infos :TSystemTime;
Zone :TTimeZoneInformation;
Rdo :Integer;
Begin

Result:=False;
Rdo:=GetTimeZoneInformation(Zone);
// Fecha es Hora local =>se ajusta el decalaje para obtener la hora absoluta
Case Rdo Of
TIME_ZONE_ID_UNKNOWN : Fecha:=Fecha+( Zone.Bias /(24*60));
TIME_ZONE_ID_STANDARD : Fecha:=Fecha+((Zone.Bias+Zone.StandardBias)/(24*60));
TIME_ZONE_ID_DAYLIGHT : Fecha:=Fecha+((Zone.Bias+Zone.DaylightBias)/(24*60));
Else
Exit;
End;
Infos.wYear :=YearOf (Fecha);
Infos.wMonth :=MonthOf (Fecha);
Infos.wDayOfWeek :=DayOfWeek (Fecha);
Infos.wDay :=DayOf (Fecha);
Infos.wHour :=HourOf (Fecha);
Infos.wMinute :=MinuteOf (Fecha);
Infos.wSecond :=SecondOf (Fecha);
Infos.wMilliseconds :=MillisecondOf (Fecha);
Result:=SetSystemTime(Infos);
End;

(se necesita tener derechos administrativos para actualizar la hora del sistema)

y la llamada sería:

If PonerEnHora(EncodeDate(2011,4,22)
+EncodeTime(17,0,0,0))
Then ShowMessage('Puesta en hora OK')
Else ShowMessage('Error al poner en hora');

No hay comentarios:

Publicar un comentario

Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...