2009-07-12 9 views
5

Y at-il un outil qui peut faire cela? Juste comme un site Web et pour les mêmes raisons fondamentales?Existe-t-il un outil pour collecter les statistiques d'utilisation des applications Win32?

MISE À JOUR --- Je veux dire la collecte d'informations statistiques sur une application que je vous écris, je besoin de savoir quelles sont les options les plus utilisées, lorsque, temps, etc.

+3

Pouvez-vous clarifier votre question? Que cherchez-vous? Que voulez-vous dire par "usage"? –

+1

@Jlouro: les détails d'ajout requis incluent si c'est pour une application que vous écrivez (c'est-à-dire que vous souhaitez incorporer ce suivi) ou pour surveiller l'utilisation d'applications arbitraires sur le même ordinateur (ou distant). Votre question est si vague qu'il est impossible de deviner ce que vous voulez exactement. – Argalatyr

+2

+1 pour la question.Je suppose que OP demande une solution pour collecter des statistiques d'utilisation de l'interface utilisateur comme "quel bouton de menu est pressé combien de fois, sont-ils accessibles par des raccourcis ou en cliquant", etc .. Cela serait assez révélateur Ruban UI) –

Répondre

0

Je suppose que vous parlez des fenêtres compteurs de performance

Jetez un oeil à ce link

Utilisez le Moniteur système Windows (SYSMON) pour voir le résultat

ont un Loo k à ce link

Il y a aussi Prof's Performance Monitoring Components pour delphi

3

J'ai déjà fait quelque chose comme ça dans le passé.

Il y a deux façons de penser à cela.

avec des actions:

Lorsque vous utilisez des actions, il est très facile de suivre l'utilisation de l'interface utilisateur en plaçant le code dans le gestionnaire TActionList.OnExecute. Cet événement se déclenche avant que l'action individuelle ne s'exécute, ce qui vous permet de suivre ce qui s'est passé et quand.

Par exemple:

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

Sans Actions:

Si vous n'êtes pas en utilisant des actions, il devient un peu plus difficile, mais pas impossible. Vous créez devez créer une nouvelle unité avec un descendant TMenuItem avec votre code de journalisation dedans. Assurez-vous de placer votre nouvelle unité après l'unité MENU dans la clause uses de chaque unité qui l'utilise. Le nouveau descendant doit s'appeler TMenuItem pour que cela fonctionne. Puisque vous réintroduisez essentiellement la même classe mais avec une fonctionnalité étendue.

Voici une unité rapide que j'ai projetée ensemble montrant un exemple très simple.

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. 

Pour utiliser le lieu de l'unité ci-dessus comme la dernière unité dans la clause uses de toute forme/DataModule avec des menus (ou TMainMenu TPopupMenu) que vous voulez tracer. Si vous ne voulez pas suivre une unité particulière, ne l'incluez pas. Ces deux méthodes sont simples et, bien qu'elles fonctionnent, elles ne sont probablement pas les meilleures solutions.

Questions connexes