2009-07-12 10 views
5

¿Hay alguna herramienta que pueda hacer esto? ¿Como un sitio web y por las mismas razones básicas?¿Hay alguna herramienta para recopilar estadísticas de uso de aplicaciones de Win32?

actualizar las estadísticas --- me refiero a la recogida de información sobre una aplicación que estoy escribiendo Necesito saber qué opciones más se utilizan, cuando, tiempos, etc.

+3

¿Puede aclarar su pregunta? ¿Qué estás buscando? ¿Qué quieres decir con "uso"? –

+1

@Jlouro: los detalles adicionales que se necesitan incluyen si esto es para una aplicación que está escribiendo (es decir, si desea incorporar este seguimiento) o para monitorear el uso de aplicaciones arbitrarias en la misma (¿o una remota?) Computadora. Su pregunta es tan vaga que es imposible adivinar exactamente lo que quiere. – Argalatyr

+2

+1 para la pregunta.Supongo que OP está preguntando acerca de una solución que recolecta estadísticas de uso de UI como "qué botón de menú presionó cuántas veces, se accede por accesos directos o haciendo clic en", etc. De hecho sería bastante revelador (es decir, MS usó tales estadísticas mientras desarrollaba IU de la cinta) –

Respuesta

0

supongo que está hablando acerca de las ventanas contadores de rendimiento

Eche un vistazo a esta link

Utilice el monitor de sistema de Windows (SYSMON) para ver el resultado

tienen un retrete k en este link

También hay Prof's Performance Monitoring Components para Delphi

3

He hecho algo así en el pasado.

Hay dos maneras en que puedo pensar para hacer esto.

Con acciones:

Al utilizar las acciones que es muy fácil de seguir el uso de la interfaz de usuario mediante la colocación de código en el controlador TActionList.OnExecute. Este evento se dispara antes de que se ejecute la acción individual, lo que le permite rastrear lo que sucedió y cuándo.

Por ejemplo:

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

Sin acciones:

Si no está utilizando acciones se vuelve un poco más difícil, pero no imposible. Usted crea tiene que crear una nueva unidad con un descendiente TMenuItem con su código de registro. Asegúrese de colocar su nueva unidad después de la unidad MENU en la cláusula uses en cada unidad que la use. El nuevo descendiente debe llamarse TMenuItem para que esto funcione. Desde su reintroducción esencialmente la misma clase pero con funcionalidad extendida.

Aquí hay una unidad rápida que lancé mostrando un ejemplo muy 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. 

Para utilizar la unidad por encima de su lugar como la última unidad de la cláusula uses de cualquier forma/módulo de datos con menús (TMainMenu o TPopupMenu) que desea rastrear. Si no desea rastrear una unidad en particular, no la incluya.

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

Estos dos métodos son simples y, aunque funcionan, probablemente no sean las mejores soluciones.

Cuestiones relacionadas