类似于C#中的应用程序的键盘记录程序,用于记录应用程序开始和结束的时间戳
本文关键字:应用程序 记录 开始 结束 时间戳 用于 键盘 类似于 程序 | 更新日期: 2023-09-27 18:27:24
我的主要目标是记录用户在应用程序上花费的"总时间"。我想在Windows中创建一个后台代理,它将安装在客户端PC上。这个代理就像一个键盘记录程序,位于后台并记录以下内容:
- 用户"启动"特定应用程序时的时间戳
- 空闲时间与在应用程序上花费的活动时间
- 用户"结束"特定应用程序时的时间戳
我面临的挑战是:
- 如何创建后台代理
- 如何记录用户何时启动和结束应用程序
如有任何帮助,我们将不胜感激。
我在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的源代码可以在这里找到