是否有收集Win32应用程序使用情况统计信息的工具?

时间:2009-07-12 00:53:34

标签: delphi winapi usage-statistics

有没有可以做到这一点的工具?就像一个网站,出于同样的基本原因?

更新--- 我的意思是收集有关我正在撰写的应用程序的统计信息 我需要知道最常用的选项,时间,等等。

3 个答案:

答案 0 :(得分:3)

我过去做过类似的事情。

我可以通过两种方式来做到这一点。

使用操作:

使用操作时,通过在TActionList.OnExecute处理程序中放置代码,可以非常轻松地遵循UI使用。此事件在单个操作执行之前触发,允许您跟踪发生的事件和时间。

例如:

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

没有操作:

如果您不使用动作,它会变得有点困难,但并非不可能。您创建必须创建一个带有TMenuItem后代的新单元,其中包含您的日志代码。确保将新单元放在每个使用它的单元的使用条款中的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.

要使用上述单元,请将其作为任何表单/ DataModule的uses子句中的最后一个单元,并将其与要跟踪的菜单(TMainMenu或TPopupMenu)放在一起。如果您不想跟踪特定单元,请不要包含它。

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

这两种方法很简单,虽然它们起作用,但它们可能不是最好的解决方案。

答案 1 :(得分:0)

我假设你在谈论Windows性能计数器

看看这个link

使用Windows系统监视器(SYSMON)查看结果

查看此link

delphi还有Prof's Performance Monitoring Components

答案 2 :(得分:-1)

您需要一些coverage analysis工具吗?