2014-05-15 1 views
0

현재 응용 프로그램은 dll user32를 사용하여 사용자가 비활성 기간을 추적합니다. 내 문제는 사용자가 파이어 폭스 나 워드에 얼마나 오래 머무는 지 또는 어느 애플리케이션이 실행되고 있는지 찾기 위해 백만 건의 쿼리를 작성하지 않아도된다는 것입니다. 내가 원했던 것은 타이머를 사용하여 프로세스가 얼마나 오랫동안 사용되었는지를 계산하는 몇 가지 방법입니다. 이 정보를 데이터베이스에 저장하십시오.타이머를 사용하여 응용 프로그램이 실행되는 시간을 추적하는 방법

+0

LostFocus 이벤트에서 타이머를 시작 하시겠습니까? – Kilazur

+1

System.Diagnostics.Stopwatch는 어떻습니까? 'TimeSpan' 객체 유형 변수에서 경과 된 시간을 얻을 수 있습니다. – Shell

+1

"백만 쿼리"각도는 매우 평이하지 않으므로 System.Management를 사용하여 Win32_Process 클래스로 쿼리하십시오. 프로세스를 열거하고 소비 한 프로세서 시간을 파악할 수 있습니다. 그리고 물론 항상 프라이버시에 대한 사용자의 욕구를 염두에 두십시오. 아무도 * 스파이 활동을 좋아하지 않습니다. –

답변

0

Form_Activate 양식에 포커스가있을 때마다 이벤트가 발생합니다. 마찬가지로, 폼이 포커스를 잃을 때 Form_Deactivate 이벤트가 발생합니다. 이 이벤트를 사용하여 양식에 포커스가있는시기와 잃어버린시기를 확인할 수 있습니다.

DateTime activated; 
protected void Form_Activated(Object sender, EventArgs e) 
{ 
    activated = DateTime.Now; 
} 

protected void Form_Deactivated(Object sender, EventArgs e) 
{ 
    DateTime deactivated = DateTime.Now; 
    TimeSpan ts = deactivated - activated; // the duration for which the form was active 


    // code to store the data activated time/deactivated time/ or duration only in the database 
} 
+0

문제는 내 응용 프로그램이 아닌 모든 응용 프로그램을 추적하려고합니다. –

+0

http://stackoverflow.com/questions/11711400/how-to-monitor-focus-changes 및 http : // stackoverflow를 참조하십시오. .com/questions/2183541/c-detected-which-application-has-focus –

관련 문제