最近小弟在做一个演示系统,上次在各位大大的建议、帮助下,我经过多次试验成功解决了利用10秒模拟实际运行一分钟的问题,在此顺便对所以提供有益参考的大大们表示感谢!
     言归正题,现在有个新的小问题,我在演示的时候需要更改系统时间,我做了个button,每次点击Button后会将系统时间更改为我设定的时间,但现在有个问题,当我推出程序的时候,我希望系统时间能恢复到正常的时间。
    我写了一段代码,但是效果不好,代码如下
Dim real_timePrivate Sub Command1_Click()
    real_time=Time
    Shell "cmd /c time " & S_hour & ":" & S_minute & ":" & S_second   's_hour,s_minute,s_second为我运行程序认为修改的时间
end subPrivate Sub Form_Unload(Cancel As Integer)
    Shell "cmd /c time " & real_time, vbHide
End Sub    现在的问题是,当我退出时,它确实能够恢复时间,但是,它恢复的是我开始运行程序的时间。比如,我早上9:00:00的时候执行程序,程序中我改为了14:00:00,程序运行了10分钟,当我退出的时候,我希望的是系统时间显示为9:10:00,但实际上去显示为9:00:00.
    我也知道问题出在什么地方,就是当我程序执行的时候,那个real_time被赋值为9:00:00的时间,在程序执行的10分钟内,real_time 没有发生变化,我试着加了个timer进来,希望能让real_time每秒钟发生变化,但是具体的代码不太会写,问题在于当timer运行时,那个系统时间已经发生了变化,我在timer中使用real_time=Time时,会将real_time赋值为我人为修改的时间。
    希望大大们能提供一个比较简单有用的建议~~

解决方案 »

  1.   

    timer中累计程序运行了多长时间, 程序退出的时候,用 real_time + 运行了的时间 
      

  2.   

    用Timer函数计算程序累积运行时间(前提是演示时间不能跨越午夜12点,否则就用GetTickCount函数累积)Option ExplicitDim real_time
    Dim ss As SinglePrivate Sub Command1_Click()
        
        real_time = Time
        ss = Timer
        
        Shell "cmd /c time " & S_hour & ":" & S_minute & ":" & S_second  's_hour,s_minute,s_second为我运行程序认为修改的时间
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        
        ss = Timer - ss
        
        real_time = DateAdd("s", ss, CDate(real_time))
        Shell "cmd /c time " & real_time, vbHide
    End Sub
      

  3.   

    楼主干脆用3楼说的用GetTickCount函数累积来计算时间差吧,这人好像是可计算到开机最多70多天的时间
      

  4.   

    在VB下用GetTickCount可以计算延迟近一个月
      

  5.   

    我本来也想这样回答,不过他说演示用。。所以还是用GetTickCount吧
      

  6.   

    试试:Option ExplicitDim real_time As Date
    Dim update_time As DatePrivate Sub Command1_Click()
        '记录更新时的当前时间
        real_time = Now
        '指定更新时间
        update_time = Format(Now, "yyyy-MM-dd 14:00:00")
        '更新系统日期和时间
        Date = DateValue(update_time)
        Time = TimeValue(update_time)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        Dim n As Long
        Dim dt As Date
        '计算当前时间与更新时间之间的差(秒),也就是程序运行了多少秒
        n = DateDiff("s", update_time, Now)
        '程序运行时间加更新时的当前时间,就是当前标准时间
        dt = DateAdd("s", n, real_time)
        '更新系统日期和时间
        Date = DateValue(dt)
        Time = TimeValue(dt)
    End Sub
      

  7.   

    和互联网标准时间对时http://download.csdn.net/source/1211915
      

  8.   

    我试了一下,发现当我退出程序的时候,系统时间没能够改回来,而是停留在我手动修改的时间上,估计是ss=timer-ss这句话上有问题,不过还是谢谢哈,我在想想,基本上应该会采取这个思路来写~