2012-06-15 48 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分鐘內開始跟蹤,並獲得所有酷炫的實時可視化效果。

聲明:我隸屬於公司。