C++使用情况统计信息

C++ Usage Statistics

本文关键字:统计 信息 情况 用情 C++      更新时间:2023-10-16

我已经在C++中创建了一个应用程序,并想知道如何实现使用情况统计系统,以便我可以收集有关用户如何使用该程序的一些数据。

例如。IP 地址、在应用程序中花费的小时数以及使用的操作系统。

从理论上讲,我知道如果必须的话,我可以自己编写代码,但我想知道是否有一个框架可以更轻松地做到这一点。 不幸的是,我无法在谷歌上找到任何东西。

虽然没有任何这样的框架,但你可以通过使用一些方法和技术来减少你必须做的工作(为了检索所有这些信息),我在下面尝试描述。请任何人随时纠正我。

让我们总结一下,我们需要哪些信息组来完成任务:

  • 用户环境信息。我建议您查看Microsoft的WMI基础架构,特别是WMI类:桌面,文件系统,网络等。在应用程序中使用此类可以帮助您检索几乎所有类型的系统信息。但是,如果您对此不满意,请参阅#2
  • 应用程序和系统性能。在这些术语下,我指的是整体系统性能、处理器数量、操作系统中运行的进程等。若要检索这些数据,可以使用 NtQuerySystemInformation 函数。在它的帮助下,您将可以访问详细的系统进程信息、系统处理器性能信息(检索有关每个处理器的信息)信息等等。
  • 用户相关信息。很难找到一个框架来做这些事情,所以我建议你简单地开始编写代码,记住你的要求:
    • 计算每个按钮被按下的次数,每个文本字段被更改的次数,等等。
    • 测量某种预定义序列中连续操作之间的延迟时间(例如,如果您有一个设置 GUI 表单,并且您希望用户非常快速地填写所有必需的文本字段,因此使用时间延迟测量可以为您提供信息,如果用户按照我们的预期行事或在 TextBox2 之后延迟 5 分钟)。
    • 任何您可能感兴趣的内容。

那么,如何实现最后一项(用户相关信息)要求呢?至于我,我会做一些类似 foling 的事情(有些可能看起来很难实现或太毫无意义): - 创建一种基计数器类并从中派生一些控件(按钮、编辑等)。 - 在获取子句柄时使用鼠标或键控的 Windows 挂钩(例如,识别控件)。 - 使用回调类,它可以完成所有"脏"工作(计数,测量,执行其他操作)。

您可以将所有这些信息存储在文本文件或SQLite数据库中,或者存储在您喜欢的任何位置。

我建议看看DeskMetrics。这篇StackOverflow文章总结了这个问题。

构建自己的框架可能需要几个月的开发时间(除了维护)。使用Trackerbird软件分析之类的东西,您可以将DLL与您的应用程序集成,并在30分钟内开始跟踪,您将获得所有很酷的实时可视化。

免责声明:我隶属于公司。