【发布时间】:2009-12-14 20:28:12
【问题描述】:
如何计算每天每个应用程序Win(进程)与组的总执行时间。
例如: 进程 - notepad.exe - 今天 10 分钟(总共)
【问题讨论】:
如何计算每天每个应用程序Win(进程)与组的总执行时间。
例如: 进程 - notepad.exe - 今天 10 分钟(总共)
【问题讨论】:
我将对 Win32_Process 使用 WMI 查询并检索 CreationDate 值,根据MSDN 是进程开始执行的日期(和时间)。
Magenta Systems 提供了一个很好的 Delphi 库。该库包含几个示例,可帮助您入门。
这仅跟踪当前正在运行的进程。如果您想跟踪曾经运行过但不再运行的进程,那么您将需要挂接到窗口,以便在每次应用程序启动时收到通知。一个例子是使用CBT hooks(基于计算机的培训,但它也用于其他事情),它允许您在每次创建窗口时得到通知。如果您使用窗口句柄来查找父进程,那么您可以使用它来自己跟踪父进程运行了多长时间。
【讨论】:
Win32 函数GetProcessTimes 是获取白天花费的创建时间和CPU 时间的另一种方法。对于执行时间,我假设您的意思是 CPU 时间而不是挂钟时间。
Here is a link to a blog post 描述如何在 Delphi 中使用 GetProcessTimes。
这是一种比使用 WMI 更“直接”的方法,但是 WMI 具有其他优点,例如能够通过网络查询其他机器。
正如skamradt 还建议的那样,此应用程序需要连续运行以跟踪所有启动和停止进程。我知道在启动和停止应用程序时获取事件的唯一方法是使用 WMI 事件。 See this question for some more info on that 以及这个Technet blog on scripting
这样做的步骤是
【讨论】: