vb 当程序运行60分钟后无键盘或鼠标动作时,如何实现程序自动锁定?
以下是一段主程序代码'获得鼠标和键盘动作的ApiPrivateDeclareFunctionGetLastInputInfoLib"user32"(pliiAsLASTI...
以下是一段主程序代码 '获得鼠标和键盘动作的Api
Private Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean
Private Type LASTINPUTINFO
cbSize As Long
dwTime As Long
End Type
' 获得当前时间 单位为毫秒
Private Declare Function GetTickCount Lib "kernel32" () As LongDim mEvent As LASTINPUTINFO
Dim StopTime As Long ' 鼠标和键盘,开始无动作的时间
Dim PrvEvent As Long ' 上一次鼠标或者键盘的状态Private Sub Timer2_Timer()
mEvent.cbSize = Len(mEvent)
GetLastInputInfo mEvent
Debug.Print mEvent.dwTime
' 判断鼠标和键盘的状态,如果状态改变,则重新设置监视时间,保存当前状态
If mEvent.dwTime <> PrvEvent Then
PrvEvent = mEvent.dwTime
StopTime = GetTickCount
Else
' 如果当前时间与开始监视时间超过3,600,000 Ms 则显示验证窗口
If StopTime >= 60 * 60 * 1000 Then 》》》》》测试到这里程序显示数据溢出!
frm_Alogin.Show 1
End If
End IfEnd Sub 展开
Private Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean
Private Type LASTINPUTINFO
cbSize As Long
dwTime As Long
End Type
' 获得当前时间 单位为毫秒
Private Declare Function GetTickCount Lib "kernel32" () As LongDim mEvent As LASTINPUTINFO
Dim StopTime As Long ' 鼠标和键盘,开始无动作的时间
Dim PrvEvent As Long ' 上一次鼠标或者键盘的状态Private Sub Timer2_Timer()
mEvent.cbSize = Len(mEvent)
GetLastInputInfo mEvent
Debug.Print mEvent.dwTime
' 判断鼠标和键盘的状态,如果状态改变,则重新设置监视时间,保存当前状态
If mEvent.dwTime <> PrvEvent Then
PrvEvent = mEvent.dwTime
StopTime = GetTickCount
Else
' 如果当前时间与开始监视时间超过3,600,000 Ms 则显示验证窗口
If StopTime >= 60 * 60 * 1000 Then 》》》》》测试到这里程序显示数据溢出!
frm_Alogin.Show 1
End If
End IfEnd Sub 展开
4个回答
2013-09-25
展开全部
Dim IOInfo As LASTINPUTINFO'
Dim lngBak As LongDim lngEnd As LongDim lngCnt As Long'Private Sub Form_Load() lngEnd = 3600 '设置停止时间,单位为秒,你可以先设置60秒查看效果 Timer1.Interval = 1000
Timer1.Enabled = True
End Sub'Private Sub Timer1_Timer() IOInfo.cbSize = Len ( IOInfo)
Call GetLastInputInfo (IOInfo) If lngBak <> IOInfo.dwTime Then '鼠标键盘有操作时计数器清0
lngBak = IOInfo.dwTime
lngCnt = 0
End If
'
lngCnt = lngCnt + 1 ' If lngCnt = lngEnd Then
Timer1.Enabled = False
MsgBox "到了1小时后自动停止计时器", 64
End If
End Sub
Dim lngBak As LongDim lngEnd As LongDim lngCnt As Long'Private Sub Form_Load() lngEnd = 3600 '设置停止时间,单位为秒,你可以先设置60秒查看效果 Timer1.Interval = 1000
Timer1.Enabled = True
End Sub'Private Sub Timer1_Timer() IOInfo.cbSize = Len ( IOInfo)
Call GetLastInputInfo (IOInfo) If lngBak <> IOInfo.dwTime Then '鼠标键盘有操作时计数器清0
lngBak = IOInfo.dwTime
lngCnt = 0
End If
'
lngCnt = lngCnt + 1 ' If lngCnt = lngEnd Then
Timer1.Enabled = False
MsgBox "到了1小时后自动停止计时器", 64
End If
End Sub
2013-09-25
展开全部
Private Sub Timer1_Timer()mEvent.cbSize = Len(mEvent)
GetLastInputInfo mEvent
StopTime = mEvent.dwTime
Debug.Print GetTickCount - StopTime
If GetTickCount - StopTime >= 5000 Then ' Form1.Show 1
End IfEnd Sub虽然你已经结题,我调试了一下,这个没问题,给你吧
GetLastInputInfo mEvent
StopTime = mEvent.dwTime
Debug.Print GetTickCount - StopTime
If GetTickCount - StopTime >= 5000 Then ' Form1.Show 1
End IfEnd Sub虽然你已经结题,我调试了一下,这个没问题,给你吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-25
展开全部
Dim StopTime As Double ' 鼠标和键盘,开始无动作的时间你度着改成这样吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-25
展开全部
StopTime 超出长度了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询