处理时间

时间:2009-12-14 20:28:13

标签: delphi process time

如何计算每个应用程序的总执行时间Win(进程)与当天的组。

例如: 进程 - notepad.exe - 今天10分钟(总计)

2 个答案:

答案 0 :(得分:4)

我将对Win32_Process使用WMI查询并检索CreationDate值,该值根据MSDN是进程开始执行的日期(和时间)。

可以从Magenta Systems获得一个很好的Delphi库。该库包含几个可帮助您入门的示例。

这仅跟踪当前正在运行的进程。如果您想要跟踪一次运行但不再运行的进程,那么您将需要挂钩到窗口,以便在每次应用程序启动时得到通知。这方面的一个例子是使用CBT hooks(基于计算机的培训,但也用于其他事情),它允许您在每次创建窗口时收到通知。如果您使用窗口句柄然后找到父进程,则可以使用它来自己跟踪父进程运行的时间。

答案 1 :(得分:1)

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

执行此操作的步骤将是

  1. 枚举所有正在运行的进程covered by this question
  2. 然后为每个进程as described here调用GetProcessTimes。