前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VB键盘鼠标无动作调用程序尝试的案例分享

VB键盘鼠标无动作调用程序尝试的案例分享

原创
作者头像
大师级码师
发布2022-11-06 19:17:34
6230
发布2022-11-06 19:17:34
举报
文章被收录于专栏:大师级码师大师级码师

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档