C ++使用情况统计

时间:2012-06-15 06:47:18

标签: c++ usage-statistics

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

EG。 IP地址,应用程序花费的小时数以及使用的操作系统。

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

3 个答案:

答案 0 :(得分:1)

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

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

  • 用户环境信息。我建议您查看Microsoft的WMI基础结构,尤其是WMI classesDesktopFile SystemNetworking等。在您的应用程序中使用此类可以帮助您几乎检索各种系统信息。但如果您对此不满意,请参阅#2
  • 应用程序和系统性能。在这些条款下,我的意思是整体系统性能,处理器数量,在OS中运行的进程等。要检索这些数据,您可以使用 NtQuerySystemInformation 功能。借助它,您将可以访问详细的 SystemProcessInformation SystemProcessorPerformanceInformation (检索有关每个处理器的信息)信息等等。
  • 用户相关信息。很难找到执行此类操作的框架,因此我建议您只需开始编写代码,并牢记您的要求:
    • 计算按下每个按钮的次数,每个文本字段都是更改等等。
    • 测量某种预定义序列中连续动作之间的延迟时间(例如,如果您有一个设置gui表单,并且您希望用户填写非常快的所有必需文本字段,那么使用延时测量可以给您如果用户按照我们的预期行事或在TextBox2之后延迟5分钟,则提供信息。
    • 任何可能对你感兴趣的事情。

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

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

答案 1 :(得分:1)

我建议您查看DeskMetrics。这个StackOverflow post总结了这个问题。

答案 2 :(得分:1)

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

免责声明:我是公司的附属公司。