Declare Function GetInputState Lib "user32" Alias "GetInputState" () As Long 用这个试试,判断当前的鼠标键盘输入状态。 以前在书上看过,记得不很清楚。希望能帮你
sdrcxzy(大向) 的方法很简单,就用他的没错。 检测代码就写在TIMER里面。
如果是指对整个操作系统没有输入,用(仅适用于 NT 系统):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 LASTINPUTINFO Private Sub Timer1_Timer() lii.cbSize = Len(lii) GetLastInputInfo lii Debug.Print GetTickCount - lii.dwTime & "ms" End Sub
如果检查是否一段事件没有操作你的窗体了:(适用于各种操作系统) Dim IdleTime As IntegerPrivate Sub Form_Load() Me.KeyPreview = True End SubPrivate Sub Form_KeyDown(......) IdleTime = 0 End SubPrivate Sub Form_MouseMove() IdleTime = 0 End SubPrivate Sub Timer1_Timer() IdleTime = IdleTime + 1 If IdleTime = 60 Then ...... End Sub
首先谢谢大家的回答。如果是指对整个操作系统没有输入,用(仅适用于 NT 系统):Private Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean =======================================================================================这个方法我试了的确有效,但是有它限制了我写的软件只能运行在NT平台上,win98就不行了,但是win98的屏幕保护是如何实现的呢?如果检查是否一段事件没有操作你的窗体了:(适用于各种操作系统) Dim IdleTime As Integer ================================================================= 这个正是我目前采用的方法,但是你有没有发现,如果窗体上有其他的控件,比如图片,比如表格,比如按钮,Form_MouseMove就不能检测到,必须写Image1_MouseMove事件处理;Command1_MouseMove事件处理,很麻烦,而且容易漏掉,程序变得臃肿。windows的操作系统的屏幕保护的唤醒, 绝对不会在每个应用程序里面写 计数器置0的语句,它到底如何实现的?
首先谢谢大家的回答。如果是指对整个操作系统没有输入,用(仅适用于 NT 系统):Private Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean =======================================================================================这个方法我试了的确有效,但是有它限制了我写的软件只能运行在NT平台上,win98就不行了,但是win98的屏幕保护是如何实现的呢?如果检查是否一段事件没有操作你的窗体了:(适用于各种操作系统) Dim IdleTime As Integer ================================================================= 这个正是我目前采用的方法,但是你有没有发现,如果窗体上有其他的控件,比如图片,比如表格,比如按钮,Form_MouseMove就不能检测到,必须写Image1_MouseMove事件处理;Command1_MouseMove事件处理,很麻烦,而且容易漏掉,程序变得臃肿。windows的操作系统的屏幕保护的唤醒, 绝对不会在每个应用程序里面写 计数器置0的语句,它到底如何实现的?
Option Explicit Private Declare Function GetInputState Lib "user32" () As LongPrivate Sub Form_Load() Timer1.Interval = 1000 Timer1.Enabled = True End SubPrivate Sub Timer1_Timer() Debug.Print GetInputState End Sub结果不管键盘和鼠标是否动过, 每次输出的都是0,
用这个试试,判断当前的鼠标键盘输入状态。
以前在书上看过,记得不很清楚。希望能帮你
检测代码就写在TIMER里面。
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Type LASTINPUTINFO
cbSize As Long
dwTime As Long
End Type
Dim lii As LASTINPUTINFO
Private Sub Timer1_Timer()
lii.cbSize = Len(lii)
GetLastInputInfo lii
Debug.Print GetTickCount - lii.dwTime & "ms"
End Sub
Dim IdleTime As IntegerPrivate Sub Form_Load()
Me.KeyPreview = True
End SubPrivate Sub Form_KeyDown(......)
IdleTime = 0
End SubPrivate Sub Form_MouseMove()
IdleTime = 0
End SubPrivate Sub Timer1_Timer()
IdleTime = IdleTime + 1
If IdleTime = 60 Then ......
End Sub
=======================================================================================这个方法我试了的确有效,但是有它限制了我写的软件只能运行在NT平台上,win98就不行了,但是win98的屏幕保护是如何实现的呢?如果检查是否一段事件没有操作你的窗体了:(适用于各种操作系统)
Dim IdleTime As Integer
=================================================================
这个正是我目前采用的方法,但是你有没有发现,如果窗体上有其他的控件,比如图片,比如表格,比如按钮,Form_MouseMove就不能检测到,必须写Image1_MouseMove事件处理;Command1_MouseMove事件处理,很麻烦,而且容易漏掉,程序变得臃肿。windows的操作系统的屏幕保护的唤醒,
绝对不会在每个应用程序里面写 计数器置0的语句,它到底如何实现的?
=======================================================================================这个方法我试了的确有效,但是有它限制了我写的软件只能运行在NT平台上,win98就不行了,但是win98的屏幕保护是如何实现的呢?如果检查是否一段事件没有操作你的窗体了:(适用于各种操作系统)
Dim IdleTime As Integer
=================================================================
这个正是我目前采用的方法,但是你有没有发现,如果窗体上有其他的控件,比如图片,比如表格,比如按钮,Form_MouseMove就不能检测到,必须写Image1_MouseMove事件处理;Command1_MouseMove事件处理,很麻烦,而且容易漏掉,程序变得臃肿。windows的操作系统的屏幕保护的唤醒,
绝对不会在每个应用程序里面写 计数器置0的语句,它到底如何实现的?
Private Declare Function GetInputState Lib "user32" () As LongPrivate Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
End SubPrivate Sub Timer1_Timer()
Debug.Print GetInputState
End Sub结果不管键盘和鼠标是否动过, 每次输出的都是0,
http://www.vckbase.com/document/viewdoc/?id=567
Windows中如何获取键盘和鼠标处于空闲状态的时间