You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VBScript中获取最后一次按键或鼠标点击的时间戳?

VBS获取键盘/鼠标最后操作时间戳并记录日志

问题描述

我是VBS新手,想要实现一个后台循环运行的脚本,获取键盘或鼠标最后一次操作的时间戳,并将这些时间戳存储到日志文件中。我找到了VBA的KeyPress事件、MouseDown/MouseUp事件相关文档,但不知道怎么在代码里运用。

我的现有代码框架如下:

Dim keyTS, mouseTS, nowTS

while(1)
    keyTS = '获取最后一次按键的时间戳'
    mouseTS = '获取最后一次鼠标点击的时间戳'
    nowTS = Now '记录每次循环的当前时间戳

    ' 将keyTS、mouseTS和nowTS写入日志文件
    wscript.sleep 60000 ' 每分钟循环一次
wend

解决方案说明

首先要明确:VBS本身没有原生的全局键盘/鼠标事件监听能力,你找到的VBA事件是针对Office应用程序控件(比如窗体文本框)的,没法直接用于系统级全局监听。要实现全局键鼠操作捕获,推荐用以下两种方案:

方案1:调用Windows API获取最后输入时间(简单高效)

Windows系统提供GetLastInputInfo API,可直接获取系统最后一次用户输入(键盘或鼠标操作)的时间戳,无需单独监听键鼠事件,适合你的需求。

完整代码示例:

Option Explicit

' 定义API相关结构和函数
Private Type LASTINPUTINFO
    cbSize As Long
    dwTime As Long
End Type

Private Declare PtrSafe Function GetLastInputInfo Lib "user32.dll" (ByRef plii As LASTINPUTINFO) As Boolean
Private Declare PtrSafe Function GetTickCount Lib "kernel32.dll" As Long

Dim logPath As String
Dim lastInputTS As String

' 初始化日志文件到桌面
logPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\InputLog.txt"

Do While True
    Dim li As LASTINPUTINFO
    li.cbSize = Len(li)
    If GetLastInputInfo(li) Then
        ' 计算最后输入的实际时间(转换开机毫秒数为系统时间)
        Dim idleMilliseconds As Long
        idleMilliseconds = GetTickCount() - li.dwTime
        lastInputTS = DateAdd("s", -idleMilliseconds / 1000, Now)
    Else
        lastInputTS = "无法获取输入时间"
    End If
    
    Dim nowTS As String
    nowTS = Now
    
    ' 追加写入日志
    Dim fs As Object
    Set fs = CreateObject("Scripting.FileSystemObject")
    Dim logFile As Object
    Set logFile = fs.OpenTextFile(logPath, 8, True) ' 8代表追加模式
    logFile.WriteLine "当前时间: " & nowTS & " | 最后一次输入时间: " & lastInputTS
    logFile.Close
    Set fs = Nothing
    
    WScript.Sleep 60000 ' 每分钟执行一次循环
Loop

方案2:全局钩子监听独立键鼠事件(复杂精准)

如果需要分别获取键盘、鼠标的独立操作时间,需要设置全局键盘/鼠标钩子。但VBS实现全局钩子涉及动态链接库调用、权限管理,新手容易出错,不推荐作为入门方案。

代码说明

  • GetLastInputInfo返回的是系统开机到最后一次输入的毫秒数,通过与当前GetTickCount的差值,转换为实际的最后操作时间。
  • 日志文件默认生成在桌面,每次循环追加记录当前时间和最后输入时间。
  • 脚本可通过wscript.exe后台运行,或cscript.exe在控制台运行。

内容的提问来源于stack exchange,提问作者Rounak Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:32:53