6

有什么工具可以做到这一点吗?就像一个网站并且出于相同的基本原因?

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

4

3 回答 3

3

我过去做过这样的事情。

我可以想到两种方法来做到这一点。

与行动:

使用动作时,通过将代码放在 TAc​​tionList.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.

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

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

这两种方法很简单,虽然它们确实有效,但它们可能不是最好的解决方案。

于 2009-07-13T15:12:27.233 回答
0

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

看看这个链接

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

看看这个链接

还有Prof's Performance Monitoring Components for delphi

于 2009-07-12T19:30:48.103 回答
-1

你需要一些覆盖分析工具吗?

于 2009-07-13T12:57:13.300 回答