VB键盘鼠标无动作调用程序的尝试

所属分类: 软件编程 / vb 阅读数: 189
收藏 0 赞 0 分享

我想要实现的功能是,当键盘无输入、鼠标无移动或点击动作时调用程序。首先想到的是用钩子HOOK来获取键盘或者鼠标的动作,如果无动作时调用程序。我尝试的结果是HOOK来HOOK去总是有问题。

后来想到Windows的屏幕保护程序就是当键盘鼠标无动作时进入屏幕保护的,于是改变思路,想把程序做成这样的形式,键盘鼠标无动作,系统进入屏幕保护,然后检测系统是否运行屏幕保护程序,如果运行的话则调用程序。这种方式就是以屏幕保护程序作为中介,把检测键盘鼠标动作的工作交给屏幕保护程序来完成了。SystemParametersInfo可以实现获取屏幕保护信息的函数。参考代码如下:

'API调用与常用定义:
Private Declare Function SystemParametersInfo _
  Lib "user32" _
  Alias "SystemParametersInfoA" _
   (ByVal uiAction As Long, _
    ByVal uiParam As Long, _
    pvParam As Any, _
    ByVal fWInIni As Long) As Boolean
 
Private Const SPI_GETSCREENSAVEACTIVE As Long = &H10  '屏保是否启用的常量
Private Const SPI_GETSCREENSAVERRUNNING As Long = &H72 '屏保是否运行的常量

Private Sub Timer1_Timer()
  Dim bRunning As Boolean   '屏保是否运行的变量,当然你可以定义全局变量
  SystemParametersInfo SPI_GETSCREENSAVERRUNNING, 0, bRunning, False '调用API,bRunning返回屏保运行状态
  Debug.Print Time; "屏保运行="; bRunning '演示:打印屏保是否运行的信息
End Sub
 
'另外,查看屏保是否启用,也可以用下面方法:
SystemParametersInfo SPI_GETSCREENSAVEACTIVE, 0, bActive, False 'bActive为返回值(逻辑型)

可是不知道为什么我在WIN7下调试还是有问题,提示SystemParametersInfo SPI_GETSCREENSAVERRUNNING, 0, bRunning, False
中的bRunning类型错误,只能作罢。

最后来说一下最终实现的方案是使用GetLastInputInfo函数获取系统的空闲时间,参考代码如下:

Option Explicit
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
 
Private Sub Form_Load()
   Timer1.Interval = 1000  
End Sub
 
Private Sub Timer1_Timer()
  Dim lii As LASTINPUTINFO
  lii.cbSize = Len(lii)
  If GetLastInputInfo(lii) Then
    If (GetTickCount - lii.dwTime) / 60000 >= 15 Then      
      Call MsgBox("由于本机15分钟没有操作,如果3分钟后没有反应,系统将强制关机", vbYesNo + vbExclamation + vbDefaultButton2, "提示")
    End If
  End If
End Sub

以上所述就是本文的全部内容了,希望大家能够喜欢。

更多精彩内容其他人还在看

VB实现禁用任务管理器的方法

本文给大家介绍的是使用VB来实现禁用任务管理器的方法和示例,十分的简单实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

VB键盘鼠标无动作调用程序的尝试

这篇文章主要介绍了VB键盘鼠标无动作调用程序的尝试,记录下整个思路和过程,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

VB使用ADO操作Access数据库

这篇文章主要介绍了VB使用ADO操作Access数据库的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

VB打开与保存txt文件的方法

这篇文章主要介绍了VB打开与保存txt文件的方法,涉及使用VB操作文本文件的相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

VB实现按行读取文本文件的方法

这篇文章主要介绍了VB实现按行读取文本文件的方法,涉及使用VB操作文件读取的相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

VB获取文件大小的方法

这篇文章主要介绍了VB获取文件大小的方法,可实现准确获取文件大小的功能,需要的朋友可以参考下
收藏 0 赞 0 分享

VB返回记录集结果到HTML表格的方法

这篇文章主要介绍了VB返回记录集结果到HTML表格的方法,实例分析了VB获取记录集与HTML表格生成的相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

VB实现的《QQ美女找茬游戏》作弊器实例

这篇文章主要介绍了VB实现的《QQ美女找茬游戏》作弊器,以一个完整实例形式分析了VB实现《QQ美女找茬游戏》作弊器的相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

VB关机恶搞小程序

本文给大家汇总了一些使用VB实现的关机恶搞小程序,大家娱乐一下就行了,千万别做坏事哦
收藏 0 赞 0 分享

VB FileSystemObject对象实例详解

FileSystemObject对象被用来访问服务器上的文件系统。这个对象能够处理文件、文件夹和目录路径。用它来检索文件系统信息也是可能的,而且vb与vbs、asp都是差不多的语法
收藏 0 赞 0 分享
查看更多