通过使用操作系统的NET命令和管道功能来获取局域网中某一台机器的日期和时间,并且通过循环来进行等待结果。
'===============================================
'功能: 取局域网中某机器的日期/时间
'参数: 机器名字符串或IP地址字符串
'作者: 朱亦文
Public Function NetTime(Mac As String) As String
Dim i As Integer
' 如果当前目录下存在 aa.bat 则删除
If Dir(CurrentProject.Path & "\aa.bat") <> "" Then
Kill CurrentProject.Path & "\aa.bat"
End If
' 如果 D: 盘根目录下存在 4.txt 则删除
If Dir("d:\4.txt") <> "" Then
Kill "d:\4.txt"
End If
' 如果 D: 盘根目录下存在 5.txt 则删除
If Dir("d:\5.txt") <> "" Then
Kill "d:\5.txt"
End If
' 产生一个新的批处理文件, 其内容为:
' net time \\机器名(或IP地址) > d:\4.txt
' copy d:\4.txt d:\5.txt
' 该批处理利用命令模式下的管道功能,
' 将NET命令产生屏幕输出存入4.txt文件
' 然后将4.txt复制到一个新的文件5.txt
' 程序将根据是否有5.txt来判断批处理是否结束
Open CurrentProject.Path & "\aa.bat" For Output As #1
Print #1, "net time \\" & Mac & " >d:\4.txt"
Print #1, "copy d:\4.txt d:\5.txt"
Close #1
' 执行刚才产生批处理文件aa.bat
Shell CurrentProject.Path & "\aa.bat", vbHide
' 等待批处理结束
Do While Dir("d:\5.txt") = ""
' 将控制权交给系统
i = DoEvents
Loop
' 打开文件
Open "d:\4.txt" For Input As #1
' 如果文件没有内容,则表示没有该主机
' 否则,文件内容为取出日期时间串
Access软件网交流QQ群(群号:198465573) |