1

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

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

从理论上讲,我知道如果必须的话,我可以自己编写代码,但我想知道是否有可用的框架让这更容易做到。不幸的是,我在谷歌上找不到任何东西。

4

3 回答 3

1

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

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

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

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

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

于 2012-06-15T08:03:13.717 回答
1

我建议看一下DeskMetrics。这篇StackOverflow 帖子总结了这个问题。

于 2012-06-21T17:23:48.203 回答
1

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

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

于 2013-07-24T16:09:11.633 回答