请教各位高手,在xp系统下,开机运行一个程序的问题。谢谢。
已经能实现此功能,但是,此程序(vb6的exe)只运行一次,如何使其在不人工关闭的情况下,一直不停地运行?
用以下代码可以持续一段时间,但不能持续多久:
For i = 0 To 9999999999999999999
原代码
Next
此法也太笨了。
[ 本帖最后由 HVB6 于 2015-7-30 20:13 编辑 ]
程序代码:Option Explicit
Const S1 = "d:\数据文件\"
Const S2 = "d:\数据文件备份\"
Dim FileJsOld As Long
Private Sub Form_Load()
FileJsOld = ReadFileCount(S2) '备份目录里文件个数
Timer1.Interval = 10000 '10秒
Timer1.Enabled = True '开定时器
End Sub
Private Sub Timer1_Timer()
Dim FileJs As Long
Dim i As Long
FileJs = ReadFileCount(S1) '新目录里文件个数,同时这样读取后,file 控件中是数据文件的路径
If FileJs - FileJsOld >= 12 Then '大于或等于12个
For i = 0 To FileJs - 1
Call Filebak(File1.List(i))
Next i
FileJsOld = ReadFileCount(S2) '如果进行了备份,那么需要重新读备份目录里的文件个数
'如果还要继续监视,那就代码到此为止。
'如果你要结束程序,就再这里再写 end 命令或 unload me 命令
End If
End Sub
Public Sub Filebak(s As String)
If Dir(S1 & s) <> "" Then '源文件存在
If Dir(S2 & s) = "" Then '文件不存在
FileCopy S1 & s, S2 & s '复制文件
Else '备份文件存在
If FileLen(S1 & s) <> FileLen(S2 & s) Then '仅简单比较文件长度
Kill S2 & s '不相同则删备份文件
FileCopy S1 & s, S2 & s '复制文件
End If
End If
End If
DoEvents '前一个是慢速操作
End Sub
Public Function ReadFileCount(s As String) As Long
If Dir(s) = "" Then Exit Function '目录不存在,直接退出
File1.Path = s '文件目录
File1.Refresh '刷新一下
DoEvents '磁盘操作是慢速操作
ReadFileCount = File1.ListCount '记录备份文件个数
DoEvents
End Function
