2009-07-12 8 views
5

これを行うためのツールはありますか?ちょうどウェブサイトのような同じ基本的な理由のために?Win32アプリケーションの使用状況の統計情報を収集するツールはありますか?

UPDATE --- 私はなど、

+3

あなたの質問を明確にしてください。何を探していますか? 「使用法」とはどういう意味ですか? –

+1

@Jlouro:これは、あなたが書いているアプリケーション(これはこのトラッキングを組み込みたい)用か、同じ(またはリモートの)コンピュータ上の任意のアプリケーションの使用状況を監視するために必要な追加情報が含まれています。あなたの質問はあまりにも曖昧で、あなたが何を正確にしたいのかを推測することは不可能です。 – Argalatyr

+2

+1の質問です。私はOPが「どのメニューボタンを何回押されたのか、ショートカットやクリックでアクセスするのか」などのUI使用統計を収集するソリューションについて質問していると思います。リボンのUI) –

答えて

0

を、回私は、オプションはほとんど使用されているかを知る必要があり、私は を書いていたアプリケーションに関する統計情報の収集を意味し、私はあなたが窓について話していると仮定パフォーマンスカウンタは

このlink

を見ては

がトイレを持っている結果を参照してくださいするには、Windowsシステムモニタ(SYSMON)を使用して持っていますこのlink

Prof's Performance Monitoring Componentsはデルファイ

-1

のためもありでkはあなたには、いくつかのcoverage analysisツールが必要ですか?

3

私は過去にこのようなことをしました。

これを行うには2つの方法があります。

アクションを使用している場合、それはTActionList.OnExecuteハンドラにコードを配置することによって、UIの使用状況を追跡することは非常に簡単です:アクションと

。このイベントは個々のアクションが実行される前に発生し、発生したことをいつでも追跡できます。例については

:アクションなし

procedure TForm1.ActionList1Execute(Action: TBasicAction; var Handled: Boolean); 
begin 
    WriteToLog(TAction(TBasicAction).Caption); 
end; 

あなたはそれが少し難しくなく不可能になるアクションを使用していない場合。作成するには、ロギングコードを含むTMenuItem子孫を持つ新しいユニットを作成する必要があります。新しいユニットは、それを利用するすべてのユニットのuses節にMENUユニットの後に配置してください。これを行うには、新しい子孫をTMenuItemと呼びます。基本的に同じクラスを再導入しているので、拡張機能があります。

私は簡単な例を示しながら一緒に投げた素早いユニットです。

unit MenuItemLogger; 

interface 

uses Menus; 

Type 
    TMenuItem = class(Menus.TMenuItem) 
    public 
    procedure Click; override; 
    end; 

implementation 

uses windows; 

{ TMenuItem } 

procedure TMenuItem.Click; 
begin 
    outputdebugstring(PWideChar(self.Caption)); 
    inherited; 
end; 

end. 

トレースしたいメニュー(TMainMenuコンポーネントまたはTPopupMenu)との任意の形式/ DataModuleののuses節の最後のユニットとして上記ユニットの場所にそれを使用します。特定のユニットを追跡したくない場合は、それを含めないでください。

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, ActnList, Menus, MenuItemLogger; 

これらの2つの方法は簡単で、動作している間はおそらく最良の解決策ではありません。

関連する問題