当前位置: 首页 > 编程笔记 >

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

白光耀
2023-03-14
本文向大家介绍VB键盘鼠标无动作调用程序的尝试,包括了VB键盘鼠标无动作调用程序的尝试的使用技巧和注意事项,需要的朋友参考一下

我想要实现的功能是,当键盘无输入、鼠标无移动或点击动作时调用程序。首先想到的是用钩子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

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

 类似资料:
  • 键盘/鼠标/触摸板 [HW] atkbd.set={2|3} 设置atkbd驱动(CONFIG_KEYBOARD_ATKBD)的键盘类型:2(默认值)表示AT键盘;3 表示PS/2键盘。 [HW] atkbd.reset 在初始化AT或PS/2键盘时重置键盘状态。常用于解决从休眠状态唤醒后键盘失效的故障。 [HW] atkbd.softraw={0|1} 当键盘按键被按下时,是返回原始的扫描码(S

  • 第六课:键盘和鼠标 欢迎来到第六课! 我们将学习如何通过鼠标和键盘来移动相机,就像在第一人称射击游戏中一样。 接口 这段代码在整个课程中多次被使用,因此把它单独放在一个文件中:common/controls.cpp,然后在common/controls.hpp中声明函数接口,这样tutorial06.cpp就能使用它们了。 和前节课比,tutorial06.cpp里的代码变动很小。主要的变化是:每

  • 本文向大家介绍C#键盘鼠标钩子实例,包括了C#键盘鼠标钩子实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#键盘鼠标钩子的实现方法。分享给大家供大家参考。具体实现方法如下:

  • 入门和简单示例 热键有时也称为快捷键, 因为它们能简便地触发动作 (例如运行程序或 键盘宏). 在下面的例子中, Win+N 被设置为启动记事本. 磅的符号 [#] 表示 Windows 键, 它被称为 修饰符: #n:: Run Notepad return 在前面的最后一行中,return 用来结束此热键。不过, 如果热键只需要执行单行语句, 那么此行可以直接放在双冒号的右边. 换句话说,re

  • 问题内容: 有没有一种方法可以使用python禁用或锁定鼠标和键盘?我想冻结鼠标并禁用键盘。 问题答案: 我还没有测试(实际上我已经测试了鼠标部分,但是它很烦人),但是使用pyhook这样的东西可以满足您的要求:

  • 问题内容: 如何在Python中控制鼠标和键盘? 这个想法与Java中的Robot()类相同。可以说:将鼠标从此处移至此处,单击此处,然后将其写在屏幕上。 对于Windows,有win32api,但我主要使用Linux。 对于Linux,有Xlib,但它也适用于键盘吗?(仅找到对鼠标的引用) 有跨平台的解决方案吗?(Linux,Windows甚至OS X都很棒。) 问题答案: 对于鼠标,我发现py