Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If MsgBox("现在时间是:" & Now() & " 是否退出?", vbYesNo, "退出确定") = vbYes Then Open "c:\a.txt" For Append As #1 Print #1, CStr(Now()) Close #1 Else Cancel = 1 End IfEnd Sub自己在C盘目录下建立个a.txt
我的程序是这样的: Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) WriteRecord (True)‘写当前时间到一文本文件的过程 End Sub'Private Sub Form_Terminate() ' WriteRecord (True)‘写当前时间到一文本文件的过程 'End SubPrivate Sub Quit_Click() Shell_NotifyIcon NIM_DELETE, nidProgramData WriteRecord (True)‘写当前时间到一文本文件的过程 End End Sub但都不能正确地记录关机的时间,当你手动去结束这一程序时才会正常地记录结束程序的时间到那文本文件里。
If MsgBox("现在时间是:" & Now() & " 是否退出?", vbYesNo, "退出确定") = vbYes Then Open "c:\a.txt" For Append As #1
Print #1, CStr(Now())
Close #1 Else
Cancel = 1
End IfEnd Sub自己在C盘目录下建立个a.txt
3楼所说的也同样道理,因为我自己用的机子,所以我不会手动去中止我的程序的,但就关机时就是不能正常的触发VB的那个事件,只有在手动中止时那事件才能正常的触发。
你看一下我的记录文件:
Start at: 2008-4-24 11:08:40
Exit at: 2008-4-24 11:44:52
Use Time[hh:mm]: [0:37]Start at: 2008-4-24 13:19:20
Exit at: 2008-4-24 15:39:16
Use Time[hh:mm]: [2:21]Start at: 2008-4-27 22:38:45
Start at: 2008-4-28 7:16:07
Start at: 2008-4-28 8:21:14
Start at: 2008-4-28 9:49:48
Start at: 2008-4-28 10:17:36
Exit at: 2008-4-28 11:04:44
Use Time[hh:mm]: [0:47]都能正确地记录每次关机的时间的。我想可能真的要用到1楼所提的,用API函数来截取系统的消息才行了,但这个用vb做得又比较麻烦,倒是用vc好!
都不能正确地记录每次关机的时间的。我想可能真的要用到1楼所提的,用API函数来截取系统的消息才行了,但这个用vb做得又比较麻烦,倒是用vc好!
——————————————————
Start at: 2008-4-28 7:16:07
Start at: 2008-4-28 8:21:14
Start at: 2008-4-28 9:49:48
Start at: 2008-4-28 10:17:36
Exit at: 2008-4-28 11:04:44
Use Time[hh:mm]: [0:47]你start后有什么操作吗?使用的是系统关闭计算机了?那就把代码改下就行了。就想3楼说的。在判断下UnloadMode参数。
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
WriteRecord (True)‘写当前时间到一文本文件的过程
End Sub'Private Sub Form_Terminate()
' WriteRecord (True)‘写当前时间到一文本文件的过程
'End SubPrivate Sub Quit_Click()
Shell_NotifyIcon NIM_DELETE, nidProgramData
WriteRecord (True)‘写当前时间到一文本文件的过程
End
End Sub但都不能正确地记录关机的时间,当你手动去结束这一程序时才会正常地记录结束程序的时间到那文本文件里。
没有测试,你自己试试吧
因为每次都要正常关机才能测试得到那个结果的嘛!Unload事件我之前是已经测试过的了,没用的,那只是窗体卸载时触发的,这个直接关机是不会有什么反应的。
在正常关机与非正常关机的情况我都试过了,一样的。现在关键的是通过什么方法让系统在关闭时去触发VB里的事件。
我N年前弄过。
Form_QueryUnload事件、Form_Unload事件,WM_QUERYENDSESSION消息截获 、WM_ENDSESSION消息截获,
以上四种方法里面的代码都会在关机时执行。我以前的不正常工作是因为用了某些优化软件设置了系统在关机时自动结束所有的任务,并把等待的时间设置行太短了,以致放在上面那些事情里的代码没有足够的时间执行,系统就已经关闭掉了。多谢各位的鼎力相助!