1

私は C++ でアプリケーションを作成しましたが、ユーザーがプログラムをどのように使用しているかに関するデータを収集できるように、使用統計システムを実装する方法を知りたいと考えています。

例えば。IPアドレス、アプリの使用時間、使用OS。

理論的には、必要に応じて自分でコーディングできることはわかっていますが、これを簡単に行うためのフレームワークがあるかどうか疑問に思っていました。残念ながら、私はグーグルで何も見つけることができませんでした。

4

3 に答える 3

1

DeskMetricsをご覧になることをお勧めします。このStackOverflow の投稿は、この問題をまとめたものです。

于 2012-06-21T17:23:48.203 に答える
1

そのようなフレームワークはありませんが、以下に説明するいくつかのアプローチとテクニックを使用して、(これらすべての情報を取得するために) しなければならない作業を減らすことができます。どなたでもお気軽に訂正してください。

要約すると、タスクを完了するために必要な情報のグループは次のとおりです。

  • ユーザー環境情報。Microsoft の WMI インフラストラクチャ、特にWMI クラス( DesktopFile SystemNetworkingなど) を確認することをお勧めします。アプリケーションでこのクラスを使用すると、ほぼすべての種類のシステム情報を取得できます。しかし、これに満足できない場合は、#2を参照してください。
  • アプリケーションとシステムのパフォーマンス。これらの用語では、全体的なシステム パフォーマンス、プロセッサの数、OS で実行されているプロセスなどを意味します。これらのデータを取得するには、NtQuerySystemInformation関数を使用できます。その助けを借りて、詳細なSystemProcessInformationSystemProcessorPerformanceInformation (各プロセッサに関する情報を取得する) 情報などにアクセスできます。
  • ユーザー関連情報。そのようなことを行うためのフレームワークを見つけるのは難しいので、要件を念頭に置いて、単純にコードを書き始めることをお勧めします。
    • 各ボタンが押された回数、各テキストフィールドが変更された回数などを数えます。
    • ある種の事前定義されたシーケンスで連続するアクション間の遅延時間を測定する (たとえば、設定 GUI フォームがあり、ユーザーが必要なすべてのテキスト フィールドを非常に速く入力することを期待している場合、時間遅延測定を使用すると、次の場合に情報を得ることができます。ユーザーは期待どおりに行動したか、TextBox2 の後に 5 分間遅れました)。
    • あなたが興味を持ちそうなものなら何でも。

では、最後の項目 (ユーザー関連情報) の要件をどのように実装できるのでしょうか? 私としては、次のようなことをします (実装が非常に難しい、または無意味に思えるものもあります): - 一種の基本 Counter クラスを作成し、そこからいくつかのコントロール (ボタン、編集など) を派生させます。- 子ハンドルの取得中にマウスまたはキーボードの Windows フックを使用する (たとえば、コントロールを認識するため)。- すべての「汚い」作業 (カウント、測定、追加アクションの実行) を実行できる Callback クラスを使用します。

このすべての情報は、テキストファイルまたは SQLite データベース、または好きな場所に保存できます。

于 2012-06-15T08:03:13.717 に答える