2011-04-10 5 views
2

Windows 서비스를 통해 잠금/잠금 해제/시작/종료/로그 오프 및 로그온 이벤트를 캡처하고 각 이벤트에 대한 기능을 실행하여 시간을 캡처 할 수 있습니다. 이벤트가 발생했을 때.java windows 서비스로 Windows 이벤트 캡처하기

Windows 서비스를 통해이 작업을 수행하므로 수동으로 프로그램을 실행할 필요가 없습니다. 그리고이 프로그램을 자바 언어로 실행하고 싶습니다.

답변

0

JNA을 사용해야하며 기본 Windows 호출로 캡처 코드를 작성해야합니다.

역방향 시뮬레이션 OS 이벤트를 수행하는 클래스 java.awt.Robot이 있지만 순수 Java로 이벤트를 캡처하는 방법을 알지 못합니다.

0

C#에서는 매우 간단합니다. C#으로 코드를 보여줄 수 있습니다. Java를 언어로 사용하려면 Ja.Net으로 변환 할 수 있습니다. (실제로 JVM을 사용하려면이 방법이 도움이되지 않습니다).

  1. 빈 C# 서비스를 만듭니다. 프로그램 주요 방법 내부
  2. true로 CanHandleSessionChangeEvent 속성을 설정 :

    당신이 사용자 로그온/로그 오프 및 세션에 대한 정보를 덤프 수있는 서비스 구현을 오버라이드 OnSessionChange 이벤트에
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    static void Main() 
    { 
        ServiceBase[] ServicesToRun; 
        LogService logService = new LogService(); 
        logService.CanHandleSessionChangeEvent = true; 
        ServicesToRun = new ServiceBase[] 
        { 
         logService 
        }; 
        ServiceBase.Run(ServicesToRun); 
    } 
    
  3. 이 /가

    protected override void OnSessionChange(SessionChangeDescription changeDescription) 
    { 
        EventLog.WriteEvent(
         new EventInstance(100, 0, EventLogEntryType.Information), 
         String.Format("Reason: {0}, SessionId:{1}", changeDescription.Reason, changeDescription.SessionId)); 
        base.OnSessionChange(changeDescription); 
    } 
    
  4. 을 분리 연결
  5. 서비스를 등록하고 시작하고 이벤트 로그에 기록을 봅니다.