淮聊首页 论坛首页 全部版面 焦点话题 论坛热帖 今日新帖 论坛搜索 论坛指南 聊天室 用户注册 登录  
  您的位置: 淮聊 >> 论坛 >> 学习园地 >> 软硬兼施 >> 查看贴子
  上篇 刷新 下篇  
 主题:从远程NT服务器中读取日期和时间
号码:107474
呢称:
北极星11
等级:0
积分:35
主题:7
回复:2
注册:2000/12/8 13:16:45
发表:2002/6/14 17:34:49 人气:67 楼主
从远程NT服务器中读取日期和时间

——从远程NT服务器中读取日期和时间 ——

[程序语言] Microsoft Visual Basic 4.0,5.0,6.0

[运行平台] WINDOWS

[源码来源] http://codeguru.developer.com/vb/articles/1915.shtml

[功能描述]

  该程序正常执行后,将返回日期和时间值。而如果NetRemoteTOD API调用失败,则显示出错信息。

它将包含所有的时区信息。把下列代码加入到标准的BAS模块中。



option Explicit

'

'

private Declare Function NetRemoteTOD Lib "Netapi32.dll" ( _

  tServer as Any, pBuffer as Long) as Long

'

private Type SYSTEMTIME

  wYear as Integer

  wMonth as Integer

  wDayOfWeek as Integer

  wDay as Integer

  wHour as Integer

  wMinute as Integer

  wSecond as Integer

  wMilliseconds as Integer

End Type

'

private Type TIME_ZONE_INFORMATION

  Bias as Long

  StandardName(32) as Integer

  StandardDate as SYSTEMTIME

  StandardBias as Long

  DaylightName(32) as Integer

  DaylightDate as SYSTEMTIME

  DaylightBias as Long

End Type

'

private Declare Function GetTimeZoneInformation Lib "kernel32" (lpTimeZoneInformation as TIME_ZONE_INFORMATION) as Long

'

private Declare Function NetApiBufferFree Lib "Netapi32.dll" (byval lpBuffer as Long) as Long

'

private Type TIME_OF_DAY_INFO

  tod_elapsedt as Long

  tod_msecs as Long

  tod_hours as Long

  tod_mins as Long

  tod_secs as Long

  tod_hunds as Long

  tod_timezone as Long

  tod_tinterval as Long

  tod_day as Long

  tod_month as Long

  tod_year as Long

  tod_weekday as Long

End Type

'

private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination as Any, Source as Any, byval Length as Long)

'

'

public Function getRemoteTOD(byval strServer as string) as date

'  

  Dim result as date

  Dim lRet as Long

  Dim tod as TIME_OF_DAY_INFO

  Dim lpbuff as Long

  Dim tServer() as Byte

'

  tServer = strServer & vbNullChar

  lRet = NetRemoteTOD(tServer(0), lpbuff)

'  

  If lRet = 0 then

    CopyMemory tod, byval lpbuff, len(tod)

    NetApiBufferFree lpbuff

    result = DateSerial(tod.tod_year, tod.tod_month, tod.tod_day) + _

    TimeSerial(tod.tod_hours, tod.tod_mins - tod.tod_timezone, tod.tod_secs)

    getRemoteTOD = result

  else

    Err.Raise Number:=vbObjectError + 1001, _

    Description:="cannot get remote TOD"

  End If

'

End Function





要运行该程序,通过如下方式调用。



private Sub Command1_Click()

  Dim d as date

'

  d = GetRemoteTOD("your NT server name goes here")

  MsgBox d

End Sub

 
-----------------------------------------------------------
淮阴师范学校98级普师4班
 本主题共有回复 0 个 本页: 0 -- 0  首页 上页 下页 尾页 切换论坛至:  
  快速回复 注意: *为必填项
 用户号码   请先登录,如果还未注册,请先注册成为新用户!
 帖子标题*   长度不得超过100字
 内容(最大16K)*  
 其它选项   显示签名    Alt+S快速提交
Copyright© 1999-2025 E-mail:zzz000ggg@sina.com 版权所有 苏ICP备05001972号|法律顾问