Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Системное время на удаленной машине? [D7, Win2k]


Kniaz ©   (2004-10-27 08:56:00) 

Подскажите пожалуста, можно ли получить системное время удалённой машины?


Rouse_   (2004-10-27 20:38:00) [1]

Ну и как всегда (постоянно я их забываю указывать :) структуры и типы:

const
 netapi32lib = 'NETAPI32.DLL';

type

 NET_API_STATUS = DWORD;

 PTimeOfDayInfo = ^TTimeOfDayInfo;
 _TIME_OF_DAY_INFO = record
   tod_elapsedt: DWORD;
   tod_msecs: DWORD;
   tod_hours: DWORD;
   tod_mins: DWORD;
   tod_secs: DWORD;
   tod_hunds: DWORD;
   tod_timezone: LongInt;
   tod_tinterval: DWORD;
   tod_day: DWORD;
   tod_month: DWORD;
   tod_year: DWORD;
   tod_weekday: DWORD;
 end;
 TTimeOfDayInfo = _TIME_OF_DAY_INFO;

function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall;
   external netapi32lib;

function NetRemoteTOD(UncServerName: LPCWSTR;
   BufferPtr: PTimeOfDayInfo): NET_API_STATUS; stdcall; external netapi32lib;


Rouse_   (2004-10-27 20:33:00) [2]

procedure TForm1.GetTODInfo(const RemoteName: String);
var
 BufferPtr: PTimeOfDayInfo;
 NameNT: PWChar;
 CurTime: TDateTime;
begin
 NameNT := StringToOleStr(RemoteName);
 if NetRemoteTOD(NameNT, @BufferPtr) = NERR_Success then
 try
   CurTime := StrToDateTime(Format('%d.%d.%d %d:%d:%d', [
     BufferPtr^.tod_day,
     BufferPtr^.tod_month,
     BufferPtr^.tod_year,
     BufferPtr^.tod_hours,
     BufferPtr^.tod_mins,
     BufferPtr^.tod_secs])) +
       // Рассчет по гринвичу
       (0.04167 * (BufferPtr^.tod_timezone div 60) * -1);
   // Текущее время на удаленной машине
   lblTime.Caption := DateTimeToStr(CurTime);
   // Временная зона
   lblTimeZone.Caption := Format('%d минут от гринвича',
     [BufferPtr^.tod_timezone]);
   // Время прошедшее с момента запускак системы...
   lblTimeBoot.Caption := TimeToStr(BufferPtr^.tod_msecs / 86400000);
 finally
   NetApiBufferFree(BufferPtr);
 end
 else
   Log(SysErrorMessage(GetLastError));
end;


User_Name   (2004-10-27 18:50:00) [3]

А есть еще NET TIME )


Дмитрий Ботвин   (2004-10-27 09:59:00) [4]

Через WMI класс Win32_OperatingSystem и смотри параметр
LocalDateTime там всё и дата и время.


Наверх

Титульная страница Поиск, карта сайта Написать письмо