2009-12-14 11 views
1

하루에 그룹과 함께 각 응용 프로그램 Win (프로세스)의 총 실행 시간을 계산하는 방법. 예를 들어프로세스 타이밍

: 과정 - notepad.exe를 - 10 분 오늘 (총)

답변

4

나는하여 Win32_Process에 대한 WMI 쿼리를 사용하고 MSDN에 따라 날짜 인에서 CreationDate 값을 검색 (시간) 것 프로세스가 실행되기 시작했습니다.

델파이의 훌륭한 라이브러리는 Magenta Systems에서 얻을 수 있습니다. 이 라이브러리에는 시작하는 데 도움이되는 몇 가지 예제가 포함되어 있습니다.

현재 실행중인 프로세스 만 추적합니다. 한 번 실행했지만 더 이상 실행되지 않는 프로세스를 추적하려는 경우 각 응용 프로그램 시작시 알림을받을 수 있도록 창에 연결해야합니다. 이 중 하나의 예는 CBT hooks (컴퓨터 기반 교육이지만 다른 용도로 사용됨)을 사용하여 창을 만들 때마다 알림을받을 수 있도록하는 것입니다. 창 핸들을 사용하여 상위 프로세스를 찾으면이 프로세스를 사용하여 상위 프로세스가 실행되는 기간을 직접 추적 할 수 있습니다.

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

단계는 실행중인 모든 프로세스 covered by this question

    1. 열거하고 각 과정 as described here에 대한 GetProcessTimes을 부를 것이다.