Private Sub logtofile(s As String) Dim f As Integer On Error Resume Next log s f = FreeFile() Open App.Path + "\VBS1.LOG" For Append As #f Print #f, Format(Now, "YYYY-MM-DD hh:mm:ss") + "." + Right("00" + CStr(mss()), 3) + " " + s Close #f If FileLen(App.Path + "\VBS1.LOG") > MAXLOGFILESIZE Then Kill App.Path + "\VBS2.LOG" Name App.Path + "\VBS1.LOG" As App.Path + "\VBS2.LOG" End If End Sub将这个dll放在windows\system32目录下,在VB6中 Private Declare Function mss Lib "mss" () As Long Debug.Print Format(Now, "YYYY-MM-DD hh:mm:ss") http://download.csdn.net/detail/zhao4zhong1/4659776
Text1设置为多行文本框。
private sub command1_click()
text1="时间1开始分析…… "
doevents: sleep 200
text1=text1 & vbcrlf & "时间2 分析到2"
doevents: sleep 200
text1=text1 & vbcrlf & "时间3 分析到3"
doevents: sleep 200
text1=text1 & vbcrlf & "时间4 分析到4"
doevents: sleep 200
text1=text1 & vbcrlf & "时间5 分析到5"
doevents: sleep 200
text1=text1 & vbcrlf & "时间6 结束"
end sub
Dim f As Integer
On Error Resume Next
log s
f = FreeFile()
Open App.Path + "\VBS1.LOG" For Append As #f
Print #f, Format(Now, "YYYY-MM-DD hh:mm:ss") + "." + Right("00" + CStr(mss()), 3) + " " + s
Close #f
If FileLen(App.Path + "\VBS1.LOG") > MAXLOGFILESIZE Then
Kill App.Path + "\VBS2.LOG"
Name App.Path + "\VBS1.LOG" As App.Path + "\VBS2.LOG"
End If
End Sub将这个dll放在windows\system32目录下,在VB6中 Private Declare Function mss Lib "mss" () As Long Debug.Print Format(Now, "YYYY-MM-DD hh:mm:ss")
http://download.csdn.net/detail/zhao4zhong1/4659776
DoEvents
DoEvents
根本就没有必要。纯粹瞎折腾。你释放CPU占用目的何在??text1.text="时间1开始分析……"
'这里就去写分析1的代码.
'这里运行的时间足够长文本能看清楚,
‘不够长根本就不需要考虑用户看得清不清楚。倒更好了,
'让用户觉得执行的很快
text1.text="时间2 分析到2"
'这里就去写分析2的代码.
text1.text="时间3 分析到3"
'……以此类推就是了,直接在分析的代码中间设置赋值。doevents不是在超长的循环里都别用它,使用它就意味着释放CPU占用,98版的MSDN本地文档说的很清楚“小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。”本来很简单的问题搞那么复杂干嘛~?
DoEvents
根本就没有必要。纯粹瞎折腾。你释放CPU占用目的何在??text1.text="时间1开始分析……"
'这里就去写分析1的代码.
'这里运行的时间足够长文本能看清楚,
‘不够长根本就不需要考虑用户看得清不清楚。倒更好了,
'让用户觉得执行的很快
text1.text="时间2 分析到2"
'这里就去写分析2的代码.
text1.text="时间3 分析到3"
'……以此类推就是了,直接在分析的代码中间设置赋值。doevents不是在超长的循环里都别用它,使用它就意味着释放CPU占用,98版的MSDN本地文档说的很清楚“小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。”本来很简单的问题搞那么复杂干嘛~?
所谓“不可预料的结果”不就是重入么?有啥可怕的。
DoEvents
根本就没有必要。纯粹瞎折腾。你释放CPU占用目的何在??text1.text="时间1开始分析……"
'这里就去写分析1的代码.
'这里运行的时间足够长文本能看清楚,
‘不够长根本就不需要考虑用户看得清不清楚。倒更好了,
'让用户觉得执行的很快
text1.text="时间2 分析到2"
'这里就去写分析2的代码.
text1.text="时间3 分析到3"
'……以此类推就是了,直接在分析的代码中间设置赋值。doevents不是在超长的循环里都别用它,使用它就意味着释放CPU占用,98版的MSDN本地文档说的很清楚“小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。”本来很简单的问题搞那么复杂干嘛~?
所谓“不可预料的结果”不就是重入么?有啥可怕的。本来就没有必要搞那么复杂。至少你告诉我你用Doevents目的何在?