类似于C#中的应用程序的键盘记录程序,用于记录应用程序开始和结束的时间戳

本文关键字:应用程序 记录 开始 结束 时间戳 用于 键盘 类似于 程序 | 更新日期: 2023-09-27 18:27:24

我的主要目标是记录用户在应用程序上花费的"总时间"。我想在Windows中创建一个后台代理,它将安装在客户端PC上。这个代理就像一个键盘记录程序,位于后台并记录以下内容:

  1. 用户"启动"特定应用程序时的时间戳
  2. 空闲时间与在应用程序上花费的活动时间
  3. 用户"结束"特定应用程序时的时间戳

我面临的挑战是:

  1. 如何创建后台代理
  2. 如何记录用户何时启动和结束应用程序

如有任何帮助,我们将不胜感激。

类似于C#中的应用程序的键盘记录程序,用于记录应用程序开始和结束的时间戳

我在C#中编写了一个键盘记录程序API,它可以挂起用户按下的任何键和鼠标点击。当其中一个事件发生时,API返回一个回调,其中包含一个对象,说明按下了哪个键以及用户是什么屏幕。鼠标单击也是如此,在wicht中,它返回用户单击的位置以及焦点所在的屏幕。

在我的API中,这是我用来获得聚焦屏幕的方法,你可以适应你的需求:

private static string CurrentWindowTitle()
{
    int hwnd = GetForegroundWindow();
    StringBuilder title = new StringBuilder(1024);
    int textLength = GetWindowText(hwnd, title, title.Capacity);
    if ((textLength <= 0) || (textLength > title.Length))
        return "[Unknown]";
    return $"[{title}]";
}

方法GetForegroundWindow()GetWindowText()只是User32.dll:的方法

[DllImport("User32.dll")]
internal static extern int GetForegroundWindow();
[DllImport("User32.dll")]
internal static extern int GetWindowText(int hwnd, StringBuilder s, int nMaxCount);

我提到的API的源代码可以在这里找到