取得伺服器之日期與時間 |
尚未結案
|
chiuwenchen
一般會員 ![]() ![]() 發表:5 回覆:4 積分:1 註冊:2002-10-18 發送簡訊給我 |
|
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 各位先進: 如何取得某一台伺服器之日期與時間我有一個方法不知道是不是您要的,參考一下:
------
~小弟淺見,參考看看~ |
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
若是 windows 的伺服器, 可以利用netapi32.dll下的NetRemoteTOD api 來取得 remote 電腦時間, 程式的範例如下: (若是無法取得連線, 是權限的問題, 記得要先 trust 過(利用 WNetAddConnection2 API), 參考相關文章: http://delphi.ktop.com.tw/topic.php?topic_id=22100
type TIME_OF_DAY_INFO = record //api 傳回的資料格式 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; PTIME_OF_DAY_INFO = ^TIME_OF_DAY_INFO; LPBYTE = ^Byte; NET_API_STATUS = DWord; //.. function NetRemoteTOD(HostName: PWideChar; Buffer: LPBYTE): NET_API_STATUS; stdcall; external 'netapi32.dll' name 'NetRemoteTOD'; //宣告在 netapi32.dll 下的 NetRemoteTOD api //.. function GetRemoteTOD(Host: WideString; TODInfo: LPBYTE): Boolean; begin Result := (NetRemoteTOD(pWideChar(Host), TODInfo) = 0); end; function GetRemoteDateTime(Host: WideString): TDateTime; var TOD : PTIME_OF_DAY_INFO; begin if NetRemoteTOD(pWideChar(Host), @TOD) = 0 then Result := EncodeDate(TOD^.tod_year, TOD^.tod_month, TOD^.tod_day) + EncodeTime(TOD^.tod_hours, TOD^.tod_mins, TOD^.tod_secs, TOD^.tod_hunds * 10) - TOD^.tod_timezone / 60 / 24 else Result := 0; end; // procedure TForm1.Button2Click(Sender: TObject); var t: TDatetime; begin t:=GetRemoteDateTime('\\192.168.6.101'); // 主機前要加 \\, 而且要先 trust 過 showmessage(formatdatetime('yyyy/mm/dd hh:nn:ss',t)); end; |
c905165
中階會員 ![]() ![]() ![]() 發表:50 回覆:120 積分:54 註冊:2002-09-29 發送簡訊給我 |
|
chiuwenchen
一般會員 ![]() ![]() 發表:5 回覆:4 積分:1 註冊:2002-10-18 發送簡訊給我 |
引言: 若是 windows 的伺服器, 可以利用netapi32.dll下的NetRemoteTOD api 來取得 remote 電腦時間, 程式的範例如下: (若是無法取得連線, 是權限的問題, 記得要先 trust 過(利用 WNetAddConnection2 API), 參考相關文章: http://delphi.ktop.com.tw/topic.php?topic_id=22100type TIME_OF_DAY_INFO = record //api 傳回的資料格式 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; PTIME_OF_DAY_INFO = ^TIME_OF_DAY_INFO; LPBYTE = ^Byte; NET_API_STATUS = DWord; //.. function NetRemoteTOD(HostName: PWideChar; Buffer: LPBYTE): NET_API_STATUS; stdcall; external 'netapi32.dll' name 'NetRemoteTOD'; //宣告在 netapi32.dll 下的 NetRemoteTOD api //.. function GetRemoteTOD(Host: WideString; TODInfo: LPBYTE): Boolean; begin Result := (NetRemoteTOD(pWideChar(Host), TODInfo) = 0); end; function GetRemoteDateTime(Host: WideString): TDateTime; var TOD : PTIME_OF_DAY_INFO; begin if NetRemoteTOD(pWideChar(Host), @TOD) = 0 then Result := EncodeDate(TOD^.tod_year, TOD^.tod_month, TOD^.tod_day) + EncodeTime(TOD^.tod_hours, TOD^.tod_mins, TOD^.tod_secs, TOD^.tod_hunds * 10) - TOD^.tod_timezone / 60 / 24 else Result := 0; end; // procedure TForm1.Button2Click(Sender: TObject); var t: TDatetime; begin t:=GetRemoteDateTime('\\192.168.6.101'); // 主機前要加 \\, 而且要先 trust 過 showmessage(formatdatetime('yyyy/mm/dd hh:nn:ss',t)); end;O.K. 謝謝!! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |