第三次问这个问题了,没人能解决吗???!!!

harp 2001-08-24 08:35:33
屏保在系统闲置一段时间后自动运行,鼠标键盘被触动则屏保取消。
我的一个程序也想达到这种效果,即系统闲置一定时间自动运行,鼠标键盘被触动则取消。
但我查遍参考书也未找到求系统闲置时间的API函数,所以我一直用一个较笨的方法,即分别算鼠标与键盘是否被触动,键盘我用的是KEY_UP,KEY_DOWN,KEY_PRESS三个命令,如果KEY_CODE,KEY_ASCII大于零,则认为键盘被触动。
可是,当程序被最小化的时候(FORM1.HIDE),以上命令会因为窗体隐藏而失效,那我该怎么办,有更好的方法达到上叙效果吗?
请帮忙,100分绝对奉送!!!
...全文
176 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
harp 2001-08-24
  • 打赏
  • 举报
回复
up!!!
harp 2001-08-24
  • 打赏
  • 举报
回复
拜托,我那个程序可不是屏保!!
zxlkxy 2001-08-24
  • 打赏
  • 举报
回复
vb 也可以直接做屏饱程序,一样简单!
gameboy999 2001-08-24
  • 打赏
  • 举报
回复
VC里可以直接做屏饱程序,呵呵,比这简单 :)
harp 2001-08-24
  • 打赏
  • 举报
回复
所有键盘事件都能测到?
包括方向键,回车键等?
fishzone 2001-08-24
  • 打赏
  • 举报
回复
用 hot key 即使隐藏了也能检测到键盘事件。在窗体中用一个timer定时监测有没有键盘事件。
用楼上老兄的钩子也行,但是有点麻烦。

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer

Public Function MyHotKey(vKeyCode As Long) As Boolean
MyHotKey = GetAsyncKeyState(vKeyCode)
End Function


Private Sub Timer1_Timer()
'On Error GoTo MYErr
If MyHotKey(vbKeyA) Then
txtLog = txtLog & "a"
ElseIf MyHotKey(vbKeyB) Then
txtLog = txtLog & "b"
ElseIf MyHotKey(vbKeyC) Then
txtLog = txtLog & "c"
ElseIf MyHotKey(vbKeyD) Then
txtLog = txtLog & "d"
ElseIf MyHotKey(vbKeyE) Then
txtLog = txtLog & "e"
ElseIf MyHotKey(vbKeyF) Then
txtLog = txtLog & "f"
ElseIf MyHotKey(vbKeyG) Then
txtLog = txtLog & "g"
ElseIf MyHotKey(vbKeyH) Then
txtLog = txtLog & "h"
ElseIf MyHotKey(vbKeyI) Then
txtLog = txtLog & "i"
ElseIf MyHotKey(vbKeyJ) Then
txtLog = txtLog & "j"
ElseIf MyHotKey(vbKeyK) Then
txtLog = txtLog & "k"
ElseIf MyHotKey(vbKeyL) Then
txtLog = txtLog & "l"
ElseIf MyHotKey(vbKeyM) Then
txtLog = txtLog & "m"
ElseIf MyHotKey(vbKeyN) Then
txtLog = txtLog & "n"
ElseIf MyHotKey(vbKeyO) Then
txtLog = txtLog & "o"
ElseIf MyHotKey(vbKeyP) Then
txtLog = txtLog & "p"
ElseIf MyHotKey(vbKeyQ) Then
txtLog = txtLog & "q"
ElseIf MyHotKey(vbKeyR) Then
txtLog = txtLog & "r"
ElseIf MyHotKey(vbKeyS) Then
txtLog = txtLog & "s"
ElseIf MyHotKey(vbKeyT) Then
txtLog = txtLog & "t"
ElseIf MyHotKey(vbKeyU) Then
txtLog = txtLog & "u"
ElseIf MyHotKey(vbKeyV) Then
txtLog = txtLog & "v"
ElseIf MyHotKey(vbKeyW) Then
txtLog = txtLog & "w"
ElseIf MyHotKey(vbKeyX) Then
txtLog = txtLog & "x"
ElseIf MyHotKey(vbKeyY) Then
txtLog = txtLog & "y"
ElseIf MyHotKey(vbKeyZ) Then
txtLog = txtLog & "z"
ElseIf MyHotKey(vbKey1) Then
txtLog = txtLog & "1"
ElseIf MyHotKey(vbKey2) Then
txtLog = txtLog & "2"
ElseIf MyHotKey(vbKey3) Then
txtLog = txtLog & "3"
ElseIf MyHotKey(vbKey4) Then
txtLog = txtLog & "4"
ElseIf MyHotKey(vbKey5) Then
txtLog = txtLog & "5"
ElseIf MyHotKey(vbKey6) Then
txtLog = txtLog & "6"
ElseIf MyHotKey(vbKey7) Then
txtLog = txtLog & "7"
ElseIf MyHotKey(vbKey8) Then
txtLog = txtLog & "8"
ElseIf MyHotKey(vbKey9) Then
txtLog = txtLog & "9"
ElseIf MyHotKey(vbKey0) Then
txtLog = txtLog & "0"
ElseIf MyHotKey(vbKeySpace) Then
txtLog = txtLog & " "
ElseIf MyHotKey(13) Then
txtLog = txtLog & vbCrLf
End If
Exit Sub
MYErr:
Err.Clear
End Sub


harp 2001-08-24
  • 打赏
  • 举报
回复
能讲具体点吗?
songyangk 2001-08-24
  • 打赏
  • 举报
回复
用HOOK呀,肯定能实现你的功能。
harp 2001-08-24
  • 打赏
  • 举报
回复
up....
harp 2001-08-24
  • 打赏
  • 举报
回复
up...:)
nanbingjun 2001-08-24
  • 打赏
  • 举报
回复
可以用子类(SubClass)
建议你看
台湾作者王国荣先生

写的 “Visual Basic6.0 与 Windows API”一书

中可以找到答案

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧