我开发一个软件,从系统得到系统启动的时间为毫秒数,想计算出系统的具体启动时间(精确到秒即可),但在vb2005中不知道该调用什么函数,才能用当前时间减去这个已运行时间毫秒数,得到系统的启动时刻?也就是说不知道如何把毫秒数转换为TimeSpan的格式(dd hh:mm:ss.ff),请各位高手指教!如果能直接得到系统启动时间也可,谢谢! Public Class Form1 Dim StartTime As DateTime Dim TargetTime As DateTime Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim RunTime As TimeSpan = TimeSpan.Parse(My.Computer.Clock.TickCount) StartTime = My.Computer.Clock.LocalTime.Subtract(RunTime) txtStartTime.Text = StartTime.ToString TargetTime = StartTime.AddHours(2) txtTargetTime.Text = TargetTime.ToString End Sub Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim diff As TimeSpan = TargetTime.Subtract(Date.Now) txtRunTime.Text = Date.Now.ToString If diff = TimeSpan.Parse(0) Then ExitWindowsEx(4, 2) End If End Sub End Class 上面是我的代码,有兴趣请过目,欢迎指正!
PublicClass Form1
Dim StartTime As DateTime
Dim TargetTime As DateTime
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
StartTime =Date.Now
txtStartTime.Text = StartTime.ToString
TargetTime = StartTime.AddHours(2)
txtTargetTime.Text = TargetTime.ToString
End SubPrivateDeclareFunction ExitWindowsEx Lib"user32" (ByVal uFlags AsLong, ByVal dwReserved AsLong) AsLongPrivateSub Timer1_Tick(ByVal sender AsObject, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim NowTime As DateTime =Date.Now
txtRunTime.Text = NotTime.ToString
If NowTime >= TargetTime Then
ExitWindowsEx(4, 2)
EndIfEnd SubEnd Class
修改后的代码如下,运行效果比原来好些! Public Class Form1 Dim StartTime As DateTime Dim TargetTime As DateTime
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim lngTickCount As ULong lngTickCount = My.Computer.Clock.TickCount StartTime = DateAdd("s", -lngTickCount * 0.001, My.Computer.Clock.LocalTime) txtStartTime.Text = StartTime.ToString TargetTime = StartTime.AddHours(2) txtTargetTime.Text = TargetTime.ToString End Sub Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim NowTime As DateTime = Date.Now txtRunTime.Text = NowTime.ToString If NowTime >= TargetTime Then ExitWindowsEx(4, 2) End If End Sub End Class 但关机好象不是重启象是注销,哈哈!