有什么工具可以做到这一点吗?就像一个网站并且出于相同的基本原因?
更新 --- 我的意思是收集有关我正在编写的应用程序的统计信息,我需要知道最常使用的选项、时间、时间等。
有什么工具可以做到这一点吗?就像一个网站并且出于相同的基本原因?
更新 --- 我的意思是收集有关我正在编写的应用程序的统计信息,我需要知道最常使用的选项、时间、时间等。
我过去做过这样的事情。
我可以想到两种方法来做到这一点。
与行动:
使用动作时,通过将代码放在 TActionList.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;
这两种方法很简单,虽然它们确实有效,但它们可能不是最好的解决方案。
我假设您在谈论 Windows 性能计数器
看看这个链接
使用 Windows 系统监视器 (SYSMON) 查看结果
看看这个链接
还有Prof's Performance Monitoring Components for delphi
你需要一些覆盖分析工具吗?