2009-07-12 13 views
5

Gibt es ein Werkzeug, das das kann? Genau wie eine Website und aus den gleichen grundlegenden Gründen?Gibt es ein Tool zum Sammeln von Win32 Anwendungsnutzungsstatistiken?

UPDATE --- ich meine Erhebung statistischer Daten Informationen über eine Anwendung, die ich schreibe ich wissen muss, welche Optionen am meisten verwendet werden, wenn die Zeiten usw.

+3

Können Sie bitte Ihre Frage klären? Wonach suchen Sie? Was meinst du mit "Nutzung"? –

+1

@Jlouro: Weitere Details, die benötigt werden, umfassen, ob dies für eine App ist, die Sie schreiben (d. H. Sie möchten diese Verfolgung integrieren) oder um die Verwendung von beliebigen Anwendungen auf demselben (oder einem entfernten?) Computer zu überwachen. Ihre Frage ist so vage, dass es unmöglich ist, genau zu erraten, was Sie wollen. – Argalatyr

+2

+1 für die Frage.Ich vermute, OP fragt nach einer Lösung, die UI-Nutzungsstatistiken sammelt, wie "welche Menütaste gedrückt hat, wie oft, ob sie durch Tastenkürzel oder durch Anklicken aufgerufen werden", etc .. Es wäre in der Tat ziemlich aufschlussreich (dh MS verwendete solche Statistiken während der Entwicklung der Ribbon UI) –

Antwort

0

Ich nehme an, Sie über die Fenster sprechen Leistungsindikatoren

Werfen Sie einen Blick auf diese link

Verwenden Sie den Windows-Systemmonitor (SYSMON) das Ergebnis ein Klo

müssen zu sehen, k an diesem link

Es gibt auch Prof's Performance Monitoring Components für delphi

3

Ich habe so etwas in der Vergangenheit gemacht.

Es gibt zwei Möglichkeiten, die ich mir vorstellen kann, dies zu tun.

Mit Aktionen:

Bei Aktionen mit, es ist sehr einfach, der UI-Nutzung zu folgen, indem Code in den TActionList.OnExecute Handler platzieren. Dieses Ereignis wird ausgelöst, bevor die einzelne Aktion ausgeführt wird. Dadurch können Sie verfolgen, was wann passiert ist.

Beispiel:

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

Ohne Aktionen:

Wenn Ihre Aktionen nicht verwenden wird es ein wenig schwieriger, aber nicht unmöglich. Sie erstellen müssen eine neue Einheit mit einem TMenuItem-Nachkommen mit Ihrem Logging-Code darin erstellen. Stellen Sie sicher, dass Ihre neue Einheit nach der MENU-Einheit in die uses-Klausel in jeder Einheit eingefügt wird, die sie verwendet. Der neue Abkömmling muss TMenuItem heißen, damit dies funktioniert. Da Sie im Wesentlichen die gleiche Klasse wieder einführen, aber mit erweiterter Funktionalität.

Hier ist eine schnelle Einheit, die ich zusammen zeigte, ein sehr einfaches Beispiel zeigend.

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. 

der obigen Einheit Ort, um es als die letzte Einheit in der uses-Klausel jeder Form/Datenmodul mit Menüs (TMainMenu oder TPopupMenu) zu verwenden, die Sie verfolgen möchten. Wenn Sie eine bestimmte Einheit nicht verfolgen möchten, schließen Sie sie nicht ein.

Diese beiden Methoden sind einfach und während sie funktionieren, sind sie wahrscheinlich nicht die besten Lösungen.

Verwandte Themen