2012-06-15 45 views
1

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

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

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

+0

什么样的应用程序?查询操作系统的范围可以从简单到中等复杂。 – moshbear

+3

如果你这样做,如果他接受发送收集的数据,一定要**询问用户。我知道如果未经我的同意,我会停止使用任何发送有关我的计算机数据的软件。 – ereOn

+0

+1 to ereOn,并补充:在某些司法管辖区,未经许可收集几乎肯定是_illegal_。 – paxdiablo

回答

1

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

让我们总结一下,我们需要完成的任务是什么组的信息:

  • 用户环境信息。我建议你看看微软的WMI基础设施,特别是WMI classesDesktop,File System,Networking等。在你的应用程序中使用这些类可以帮助你检索几乎所有类型的系统信息。但如果您不满意,请参阅#2
  • 应用和系统性能。在这些术语中,我的意思是整体系统性能,处理器数量,在OS中运行的进程等。要检索这些数据,您可以使用函数。在它的帮助下,您将获得详细的SystemProcessInformation,SystemProcessorPerformanceInformation(检索有关每个处理器的信息)等等。
  • 用户相关信息。很难找到一个框架,做这样的事情,所以我建议你就开始写代码,铭记您的要求:
    • 计数每个按钮了多少次按下,每个文本字段是改变等
    • 测量某些预定义序列中连续动作之间的延迟时间(例如,如果您有一个设置gui形式,并且您期望用户填写所需的所有文本字段的速度非常快,那么使用时间延迟测量可以为您提供一个信息if用户按照我们的预期行事,或在TextBox2之后延迟5分钟)。
    • 任何可能会对你感兴趣的东西。

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

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

1

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

声明:我隶属于公司。