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

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

(0)

相关推荐

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

    本文实例讲述了VB返回记录集结果到HTML表格的方法.分享给大家供大家参考.具体实现方法如下: function ReturnHTMLTable(query) set rs = cn.Execute(query) rs.MoveFirst response.Write "<table class=""data"" cols=""" & rs.Fields.Count & """

  • VB简单实现防止文件被改写

    最近在写的一个小程序中有个配置文件,这个文件对整个程序来说是至关重要的,如果它被删除或者改写的话,整个程序无法运行,或者运行后无法关闭.所以我一直在寻找如果让手工无法改写文件的方法. 对于"删除"来说是很容易解决的,程序中查找配置文件的路径,若为空则创建,并给些默认值.VB的示例代码如下: FileName = App.Path + "\CONFIG" '如果文件不存在,则创建文件 If Dir(FileName) = "" Then Open

  • VB使用ADO操作Access数据库

    这里只是个简单不能再简单的VB小程序实例,但它包含这几个关键字:VB6.0.ADO.Access 环境:visual basic 6.0 企业版(非精简版,不然会缺少必须的控件) 数据库:Access数据库,数据库是xs.mbd,内建表为xj 结果:vb使用ADO连接access数据库,查询xj表中的所有数据,然后把查询到的结果循环输出到窗口中. 代码: Private Sub Form_Click() Dim db As New ADODB.Connection, RS As New ADOD

  • VB获取文件大小的方法

    本文实例讲述了VB获取文件大小的方法.分享给大家供大家参考.具体实现方法如下: <% ' Copyright (c) 2009, reusablecode.blogspot.com; some rights reserved. ' ' This work is licensed under the Creative Commons Attribution License. To view ' send a letter to Creative Commons, 559 Nathan Abbott

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

    本文实例讲述了VB打开与保存txt文件的方法.分享给大家供大家参考.具体如下: Private Sub cmdsave_Click() Dim filelocation As String ' loads save as box commondialog1.ShowSave filelocation = commondialog1.FileName ' append saves over file if it assists Open filelocation For Append As #1

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

    本文实例讲述了VB实现的<QQ美女找茬游戏>作弊器.分享给大家供大家参考.具体如下: 比较无聊哈,原理很简单,用VB速度比较慢,但是实现很容易. Option Explicit Private Type sPOINT x As Long y As Long End Type Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function Get

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

    本文实例讲述了VB实现按行读取文本文件的方法.分享给大家供大家参考.具体如下: '(general declaration) Dim nFileNum As Integer, sText As String, sNextLine As String, lLineCount As Long '================================== Private Sub Command1_Click() ' Get a free file number nFileNum = Free

  • VB.NET获取文件默认图标的方法

    本文实例讲述了VB.NET获取文件默认图标的方法.分享给大家供大家参考.具体如下: 该段代码帮助你获取计算机上的任何文件的默认图标,使用Shell32.dll. Private Structure SHFILEINFO Public hIcon As IntPtr Public iIcon As Integer Public dwAttributes As Integer <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _ Public

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

    我想要实现的功能是,当键盘无输入.鼠标无移动或点击动作时调用程序.首先想到的是用钩子HOOK来获取键盘或者鼠标的动作,如果无动作时调用程序.我尝试的结果是HOOK来HOOK去总是有问题. 后来想到Windows的屏幕保护程序就是当键盘鼠标无动作时进入屏幕保护的,于是改变思路,想把程序做成这样的形式,键盘鼠标无动作,系统进入屏幕保护,然后检测系统是否运行屏幕保护程序,如果运行的话则调用程序.这种方式就是以屏幕保护程序作为中介,把检测键盘鼠标动作的工作交给屏幕保护程序来完成了.SystemParam

  • 对键盘鼠标宏处理--按键精灵让我们不要重复工作

    每天,我们开机的第一件事就是打开Foxmail收信,然后打开QQ看看好友的留言--,但每天都重复这些固定的操作,是不是也有点厌倦了?呵呵,"按键精灵"是一个可以进行键盘鼠标宏处理的软件,我们可以使用它制作键盘鼠标的动作脚本,从而实现自动执行一系列的键盘鼠标操作的功能.下面我们为每天要启动多次Foxmail收信的操作做一个自动化.启动软件,在工具栏上点"添加"按钮添加一个脚本动作,弹出脚本编辑器窗口.在做这个脚本之前,先想一下收信我们都做了哪些具体操作,然后按照这个过

  • 浅析Android 模拟键盘鼠标事件

    通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成:Socket编程:实现PC和Emulator通讯,并进行循环监听Service服务:将Socket的监听程序放在Service中,从而达到后台运行的目的.这里要说明的是启动服务有两种方式,bindService和startService,两者的区别是,前者会使启动的Service随着启动Service的Activity的消亡而消亡,而startService则不会这样,除非显式调用stopServi

  • 详解Python中键盘鼠标的相关操作

    目录 一.前言 二.pyautogui模块 三.鼠标相关操作 1.鼠标移动 2.获取鼠标位置 3.鼠标点击 4.按松鼠标 5.拖动窗口 6.上下滑动 7.小程序——鼠标操控术2.0 8.小程序——连点器 四.键盘相关操作 1.按键的按松 2.键入字符串 3.热键 4.小程序——轰炸器 5.小程序——520个我爱你 五.尾声 一.前言 恭喜你,学明白类,你已经学会所有基本知识了. 这章算是一个娱乐篇,十分简单,了解一下pyautogui模块,这算是比较好学还趣味性十足的,而且可以做许多小程序. 本

  • VB实现鼠标绘图实例代码

    本文所述为VB实现鼠标绘图的实例,该实例实现线条颜色和线宽可自设,当按下鼠标按键时绘图开始并记录最初的起点,如果不是处在绘图状态则退出该过程,如果处在绘图状态则从起点到目前鼠标所在点绘制直线,然后将当前鼠标所在点作为新的起点,当释放鼠标按键时绘图结束. 具体的功能代码如下: VERSION 5.00 Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "comdlg32.ocx" Begin VB.For

  • 连接Oracle数据库时报ORA-12541:TNS:无监听程序的图文解决教程

    在用PL/SQL Developer等客户端工具连接oracle服务器时出现ORA-12541:TNS:无监听程序的错误,如下图: 发现原来是oracle的监听没有启动,重启监听后就连接成功了,下面跟大家分享一下如何启动oracle的监听. 1.在安装Oracle服务器的主机上,打开Net Configuration Assistant 2.选择监听程序配置,下一步 3.选择重新配置,下一步 4.选择监听程序,默认,下一步 注:如果你的监听已启动,则出现提示框,选择是 5.选择协议,使用默认的T

  • C#实现可捕获几乎所有键盘鼠标事件的钩子类完整实例

    本文实例讲述了C#实现可捕获几乎所有键盘鼠标事件的钩子类.分享给大家供大家参考,具体如下: using System; using System.Text; using System.Runtime.InteropServices; using System.Reflection; using System.Windows.Forms; namespace MouseKeyboardLibrary { /// <summary> /// Abstract base class for Mous

  • 终于发现了鼠标关机后仍然发光的原因了与关闭键盘鼠标开机功能的方法第1/2页

    主板的键盘鼠标开机功能是造成鼠标在关机后仍然发光的最普遍的原因--为了实现键盘鼠标开机.网络唤醒等电源管理功能,目前市场上主流的ATX12V电源都会向主板提供+5VSB的供电.也就是说,主流ATX电源在关机后并没有切断所有的电压供给,而是保留了一组+5VSB输出为主板供电,让主板.键盘鼠标等处于待机状态.由于眼下绝大多数主板都支持PS/2键盘鼠标开机,所以在关机后电源仍然为主板的PS/2口供电,让鼠标处于待机状态,这时候最明显的特征就是光电鼠标的扫描灯仍然会发光. 如果大家的主板只支持PS/2键

  • C#键盘鼠标钩子实例

    本文实例讲述了C#键盘鼠标钩子的实现方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.ComponentModel; using System.Ref

  • Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】

    本文实例讲述了Python实现监控键盘鼠标操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pythoncom import pyHook import time def onMouseEvent(event): "处理鼠标事件" fobj.writelines('-' * 20 + 'MouseEvent Begin' + '-' * 20 + '\n') fobj.writelines("Current Time:%s\

随机推荐