小弟想实现以下功能,随机时间启动某程序,然后再运行随机一段时间后关闭该程序,然后再在随机时间后再次启动改程序,再在随机运行一段时间后关闭该程序,不结束本程序则不结束该循环。这是我写的通过按钮来结束该程序的例子(以QQ.exe为例):Private Sub Command1_click()
    Set objWMIService = CreateObject("winmgmts:{impersonationLevel=Impersonate}!root\cimv2")
    Set colProcesslist = objWMIService.ExecQuery("select * from win32_process where name=" & "'QQ.exe'")
        For Each objProcess In colProcesslist
             objProcess.Terminate
        Next
End Sub
这是我通过按钮产生随机数的代码,假设i产生的随机数是分钟数:
Private Sub Command2_Click()
  Randomize
  i = Int(Rnd * 40 + 20)  
  Print i
End Sub如何在实现以上目的的同时还能够依次执行,也就是说执行了启动后才在随机分钟数后关闭,关闭一定时间后才会执行启动,而不会出现本已启动而再次启动、本已关闭而再次关闭的情况,就像电灯开关一样的执行?并且开与关的分钟数都是随机的?

解决方案 »

  1.   

    Private Sub Form_Load()
        dim i as integer    Randomize
        i = Int(Rnd * 40 + 20)   
        Print i
        timer1.Interval = i * 1000   Timer1.Enabled = True
    End SubPrivate Sub Timer1_Timer()
        static blnRun as boolen
        dim i as integer    if blnRun then
            call sub_close
            blnRun=false
        else
            call sub_open
            blnRun=true
        end if    Randomize
        i = Int(Rnd * 40 + 20)   
        Print i
        timer1.Interval = i * 1000
    end sub
      

  2.   

    支持楼上的,使用Timer能很好的实现这个功能。
      

  3.   

    那么我需要的时间间隔加入在50-80分钟之间,怎么做才能确保不溢出呢?请高手继续赐教。timer1.Interval = i * 1000这里应该怎么处理?
      

  4.   

    这个简单啊,使用NOw函数来判断时间差就是了