если вы видите этот текст, отключите в настройках форума использование JavaScript
Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания .
Новичкам также крайне полезно ознакомиться с данным документом .
Что ты понимаешь под «нормальной реализацией»? Есть API, есть голова... Самой хорошей должна быть _твоя_ реализация! ;-) Ладно, пример кода внутри... 23.06.04 16:19 Число просмотров: 1775
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 24.06.04 07:37 Количество правок: 2
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.
---
<networking >
Как узнать время на удаленной машине... 23.06.04 15:36
Автор: Scratch Статус: Незарегистрированный пользователь
...Если это просто рабочая станция (WIN) без сервера времени на ней?
в консоли net help time 23.06.04 15:42
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman Отредактировано 23.06.04 15:43 Количество правок: 1
Как узнать время на удаленной машине... 23.06.04 15:49
Автор: Scratch Статус: Незарегистрированный пользователь
Мне из проги надо своей узнать... Я уже узрел про ф-ю NetRemoteTOD, но реализации ее нормальной так и не нашел
Что ты понимаешь под «нормальной реализацией»? Есть API, есть голова... Самой хорошей должна быть _твоя_ реализация! ;-) Ладно, пример кода внутри... 23.06.04 16:19
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 24.06.04 07:37 Количество правок: 2
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.
---
если не в лом 23.06.04 16:09
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
бери дебаггер в руки и смотри как работает тот же net.exe
прога небольшая, так что долго трассить не придется
«net time /?» пробовал? ;-) 23.06.04 15:40
Автор: HandleX <Александр М.> Статус: The Elderman