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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索vb
调用程序
记录鼠标键盘动作软件、录制键盘鼠标动作、鼠标键盘动作录制工具、模拟鼠标键盘动作、otg鼠标 键盘无法调用,以便于您获取更多的相关知识。

时间: 2024-11-10 11:09:16

VB键盘鼠标无动作调用程序的尝试_vb的相关文章

对键盘鼠标宏处理--按键精灵让我们不要重复工作_使用教程

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

Delphi建键盘鼠标动作纪录与回放

Windows提供API函数SetwindowsHookEx来建立一个Hook,通过这个函数可以将一个程序添加到Hook链中监视Windows 消息,函数语法为: SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD) 其中参数idHook指定建立的监视函数类型. 通过Windows MSDN帮助可以看到,SetwindowsHookEx函数提供15种不同 的消息监视类型,在这里我们

VB.NET全局键盘鼠标钩子[Vb.Net Hook](修正版)

原文有些BUG,因为这是段我从C#中转换而来的代码,所在最初的转换中因为两种语言的性质不同,所以无法完全兼容一些特性. 当然,现在的我已经完全有能力兼容两种语言的特性了,所以就重写了本段代码,将原代码中的事件检测,以及原代码中的KeyPress 时间无法检测输入字符大小写的BUG消除(在此感谢verywzm 同志) . 注意:本段代码如果想要在VS中运行,请将[工程属性] - [调试] - [启动 Visual Studio 宿主进程 ] 设置的勾去掉,或者使用 CTRL+F5 进行编译后调试!

win7系统电脑有鼠标无键盘怎么办?

  win7系统电脑有鼠标无键盘怎么办? 1.打开能上网的电脑. 2.双击桌面上的""360管理软件",如果没有可以直接在百度上下载360管理软件,再按我的方法进行操作.当然你也可以直接在百度上找手写输入法直接下载. 3.打开""360管理软件"界面. 4.打开后,找到左边一栏的目录,找到"输入法". 5.单击"输入法",进入"输入法"里面内容. 6.找到汉洋手写输入法,如图片中红色显示

java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法

问题描述 java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法 创建子类对象时,Student s = new Student(""school""); 该构造方法中没有显示调用父类的构造方法,但还是编译成功了,该构造方法调用自身的构造函数,此构造函数中有调用父类的构造方法,执行成功的原因是什么 解决方案 不用显示调用,会自动执行父类的构造 解决方案二: 子类的构造方法中,如果没有显示调用父类的构造方法,会默认调用父类无参的构造方法.类似于

鼠标控制CD-Audio播放程序

只要你想听CD,它在任何时候(DOS下,游戏下都可以)用鼠标激活,鼠标控制,为你播放.并提供了选曲和暂停功能,这为光驱上无直接播放建的朋友提供了莫大的方便.该程序思路巧妙,利用INT 33H的现有鼠标功能,巧妙扩展,达到任何条件下激活的能力!!如果你有兴趣,可以把他改为鼠标控制XXXXXX的程序,随时激活,方便无比!!! 源码如下: ;mcd.asm.286code segmentassume cs:code,ds:codeorg 100hstart:jmp init_cd ;到初始化cd_co

浅析Android 模拟键盘鼠标事件

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

【转载】synergy在Windows和Linux下使用全攻略(多台PC共享一套键盘鼠标)

synergy-project.org/nightlysyn 本攻略中介绍的是双机键盘鼠标共享,多机情况类似,学会双机的,其他情况自然就会了.     在工作中,有一台笔记本和一台个人PC,个人PC的键盘鼠标都相当难用,遂希望能找到一个能让我使用笔记本键盘和鼠标能直接实时操作另一台PC的办法,不负所望,发现了synergy这款软件.这款软件的好处在于:它可以跨操作系统使用,只要你的多台电脑是通过网络连接,在同一个网段(不同网段没有试验过),并且支持TCP/IP协议,那都可以轻松实现多台电脑的共享

ASP、VB和XML建互联网应用程序1

用ASP.VB和XML建立互联网应用程序(1) 在个人电脑上使用单机版应用软件的时代很快就要过去了,现在大部分的应用程序都开发出网络版或大都需要共享网络上丰富的数据资源.我们虽然写了很长时间基于客户端/服务器的应用程序,但是这些程序大部分只是运行在小型的局域网内部.然而,有很多客观的原因要求我们要修改这些程序以使它们能够运行在一个企业的内部网甚至是国际互联网. 是什么原因迫使我们做呢?首先,随着一个企业的规模逐渐扩大,公司可能会跨地区甚至跨国经营,每个分公司的员工的数量也会逐年增多,这些在外地的