【问题标题】:Keylogger-like application in C# to record time-stamps for application start and endC# 中的类似键盘记录器的应用程序,用于记录应用程序开始和结束的时间戳
【发布时间】:2013-08-14 21:28:37
【问题描述】:

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

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

我的挑战是:

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

任何帮助将不胜感激。

【问题讨论】:

  • 学习如何制作任务管理器,这个挑战将是小菜一碟! c-sharpcorner.com/UploadFile/satisharveti/…您还可以使用“ShowInTaskbar”属性隐藏表单
  • +1 @GiwrgosTsopanoglou:非常有用的链接,谢谢!
  • 谢谢 .. 将在 POC 上工作 :)

标签: c# timestamp keylogger


【解决方案1】:

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

在我的 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的源代码可以找到here

【讨论】:

    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 2010-09-27
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多