2009-09-21 4 views
1

뒷 배경에서 C# 응용 프로그램을 실행하고 있습니다. 이제 시스템이 잠길 때이 응용 프로그램을 중지하고 싶습니다. 내가 어떻게 할 수 있지. 이것에 관한 도움은 정말 감사하겠습니다.C#을 사용하여 키보드 키를 식별하는 방법

감사합니다. Hougen 솔루션입니다. 이 이벤트를 "Microsoft.Win32.SystemEvents.SessionSwitch"를 처리하기위한 DLL을 포함시켜야한다고 제안 해 주시겠습니까? 그리고이 코드가 어느 층에 존재해야하는지. 비즈니스 계층에있는 것 같습니다. 이걸 맹렬히 비난 한거야?

+3

키보드에 어떤 질문이 있습니까? – Joey

+0

Win + L 키보드 조합을 잡으려고 생각하십니까? 나는 컴퓨터가 여전히 다른 방법을 사용하여 잠길 수 있기 때문에 그것이 당신의 문제를 해결할 것이라고 생각하지 않습니다 ... –

+0

Win + L에서와 같이 잠겨 있거나 고정 된 상태로 잠긴 것을 의미합니까? –

답변

9

쉬운.

Microsoft.Win32.SystemEvents.SessionSwitch 

이벤트에 대한 이벤트 처리기를 만듭니다. 이 경우 SessionSwitchReason.SessionLock 값인 SessionSwitchEventArgs.Reason 속성을 확인하십시오.

시암 : 죄송합니다. 특별한 DLL을 포함하지 않아도됩니다. SystemEvents 클래스는 System 어셈블리에 있습니다. 이 핸들러가 비즈니스 계층에 속하는지 여부는 Windows 서비스에서 상속받은 서비스 클래스가 포함 된 프로젝트에 속한 것 같습니다.

public MyService() 
{ 
    InitializeComponent(); 
    SystemEvents.SessionSwitch += SystemEvents_SessionSwitch; 
} 

void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e) 
{ 
    if (_isRunning) 
    { 
     // Pause 
    } 
} 
+0

고마워요. 이 접근법을 시도해보고 알려 드리겠습니다. –

+0

이 이벤트를 처리하기위한 Dll을 포함해야합니까? –

+0

이 이벤트를 제기해야하는 레이어를 제안 할 수 있습니까? –

관련 문제