2009-11-17 5 views
0
static void Main() 
{   
    // Set the SystemEvents class to receive event notification when a user 
    // when display settings change. 
    SystemEvents.DisplaySettingsChanged += new 
     EventHandler(SystemEvents_DisplaySettingsChanged);   

    // For demonstration purposes, this application sits idle waiting for events. 
    Console.WriteLine("This application is waiting for system events."); 
    Console.WriteLine("Press <Enter> to terminate this application."); 
    Console.ReadLine(); 
} 

private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e) 
     { 
    Console.WriteLine("Display setting change ."); 

} 

나는 시스템을 다시 시작하고 로그인 한 다음 작동하지 않는 디스플레이 설정을 변경하고 서비스가 실행 중이지만 Windows 서비스를 만들었습니다.신뢰할 수있는 캡처 디스플레이 설정 변경 방법

서비스를 다시 시작할 때 디스플레이 설정을 변경 한 다음 이벤트 설정을 표시합니다.

나는 SystemEvents.DisplaySettingsChanged가 일부 서비스에 의존한다고 생각합니다.

답변

1

SystemEvents 클래스는 터미널 서비스 (TermService)를 사용하는 WTSSession API를 사용합니다. 서비스가 시작되기 전에 SystemEvents로 서비스가 망가질 경우 흥미로운 방식으로 실패합니다. TermService에 의존하는 서비스를 만들면 서비스가 시작될 때까지 SystemEvents 초기화가 작동합니다.

+0

예 제가 처음 로그온 할 때 로그온, 로그 오프, 잠금 및 잠금 해제와 같은 SystemEvents.SessionSwitch 이벤트를 캡처 할 수 있지만 설정을 변경하면 SystemEvents.DisplaySettingsChanged가 실행되지 않습니다. –

+0

실행중인 OS는 무엇입니까? 나는 서비스 세션 0 격리가 2003보다 새로운 것에서 안정적으로 작동하는 것을 막을 것이라고 믿는다. http://www.microsoft.com/whdc/system/vista/services.mspx를 참조한다. – nitzmahone

관련 문제