"Советы по Delphi. Версия 1.0.6" - читать интересную книгу автора (Озеров Валентин)

Изменение системного времени из Delphi

Как я могу сменить системное время Windows 95 из программы, написанной на Delphi 2.0?

Вот правильное решение:

//*************************************************************************

// Функция (раздел Public) SetPCSystemTime изменяет системную дату и время.

// Параметр(ы)          :      tDati   Новая дата и время

// Возвращаемые значения:      True – успешное завершение

//                             False – метод не сработал

//*************************************************************************

function SetPCSystemTime(tDati: TDateTime): Boolean;

var

 tSetDati: TDateTime;

 vDatiBias: Variant;

 tTZI: TTimeZoneInformation;

 tST: TSystemTime;

begin

 GetTimeZoneInformation(tTZI);

 vDatiBias := tTZI.Bias / 1440;

 tSetDati := tDati + vDatiBias;

 with tST do begin

  wYear:= StrToInt(FormatDateTime('yyyy', tSetDati));

  wMonth:= StrToInt(FormatDateTime('mm', tSetDati));

  wDay:= StrToInt(FormatDateTime('dd', tSetDati));

  wHour:= StrToInt(FormatDateTime('hh', tSetDati));

  wMinute:= StrToInt(FormatDateTime('nn', tSetDati));

  wSecond:= StrToInt(FormatDateTime('ss', tSetDati));

  wMilliseconds:= 0;

 end;

 SetPCSystemTime:= SetSystemTime(tST);

end;