我想让我的程序在1个小时没有进行操作时自动退出,我在主窗口用了一个定时器,当有键盘或鼠标消息时定时器就初始化,否则当定时器触发时就退出程序,但我的程序是多文档的,不知道该怎么拦截所有窗口的消息,请高手指点!!!

解决方案 »

  1.   

    可以使用END来结束程序,但是经常会出现程序非法退出、
    也可以用
        For i = Forms.Count - 1 To 0 Step -1
            Unload Forms(i)
        Next
      

  2.   

    '返回鼠标键盘的空闲时间就行.Private Declare Function GetForegroundWindow Lib "user32" () As Long
    Private Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean
    Private Declare Function GetTickCount Lib "kernel32" () As Long
    Private Type LASTINPUTINFO
        cbSize As Long
        dwTime As Long
    End Type
    Dim lii As LASTINPUTINFODim freecount As Long
    Private Sub Form_Load()
    Timer1.Interval = 1000
    Timer1.Enabled = True
    freecount = 0
    End SubPrivate Sub Timer1_Timer()
    Dim Myform As Form
    Dim fHwnd As LongfHwnd = GetForegroundWindow
    For Each Myform In Forms
        If fHwnd = Myform.hWnd Then
            lii.cbSize = Len(lii)
            GetLastInputInfo lii
            freecount = (GetTickCount - lii.dwTime) / 1000
            If freecount < 3600 Then Exit Sub
        End If
    Nextfreecount = freecount + 1If freecount > 3600 Then
        For Each Myform In Forms
            Unload Myform
        Next
    End If
    End Sub