program TimeSynch;
{$APPTYPE CONSOLE}
uses
Windows,
LM;
Var
pTOD: PTimeOfDayInfo;
tSys: TSystemTime;
rHost: WideString;
err: NET_API_STATUS;
begin
If ParamCount < 1 Then
Begin
WriteLn('Server name required. Use "TimeSynch \\HostName [/s]et"');
Exit;
End;
rHost := ParamStr(1);
pTOD := Nil;
err := NetRemoteTOD(PWideChar(rHost), @pTOD);
If (err <> NERR_Success) Or (pTOD = Nil) Then
Begin
WriteLn('Network error ', err);
ExitCode := err;
Exit;
End;
WriteLn(
'Current time at ', rHost, ' is ',
pTOD.tod_day, '/', pTOD.tod_month, '/', pTOD.tod_year, ' ',
(pTOD.tod_hours - pTod.tod_timezone Div 60) mod 24, ':', (pTOD.tod_mins - pTod.tod_timezone Mod 60) Mod 60, ':', pTOD.tod_secs, '.', pTOD.tod_hunds
);
If (ParamStr(2) = '/s') Or (ParamStr(2) = '/S') Then
Begin
tSys.wDayOfWeek := 0; //Ignored
tSys.wYear := pTOD.tod_year;
tSys.wMonth := pTOD.tod_month;
tSys.wDay := pTOD.tod_day;
tSys.wHour := pTOD.tod_hours;
tSys.wMinute := pTOD.tod_mins;
tSys.wSecond := pTOD.tod_secs;
tSys.wMilliseconds := pTOD.tod_hunds;
If Not SetSystemTime(tSys) Then
Begin
err := GetLastError;
WriteLn('Error ', err, ' setting system time ');
ExitCode := err;
Exit;
End;
WriteLn('Time synchronizing success!');
End;
end.
---
|