2011-03-04 2 views
3

저는 C++에서 프로그래밍중인 구식 창 작업을하고 있으며 WndProc에서 사용자가 화면을 로그 오프하거나 잠근 이벤트를 캡처해야합니다.사용자 잠금 화면 용 Windows 메시지

업데이트 (감사합니다 David Hefernan) 내가 찾은 유일한 방법은 화면 잠금 이벤트를 처리하지 않는 WM_ENDSESSION 메시지입니다.

누구에게 어떻게 이것이 이루어 졌는지 알 수 있습니까? Windows XP의 맛을 통해 Windows 2000에 적용해야합니다.

+0

'WM_ENDSESSION' lParam은 종료가 아닌 로그 오프 일 때'ENDSESSION_LOGOFF'를 포함합니다. –

+0

@David : Unbelievable (좌절). 그 점을 발견해 주셔서 감사합니다. 이제는 내 앱이 WM_ENDESSION에 반응하지 않는 이유를 알아야합니다. 내 앱이 내 앱을 전혀받지 못하는 것입니다. –

+0

브렌트, 관련 메시지를 수신하려면 WTSRegisterSessionNotification을 호출하십시오. –

답변

7

WM_WTSSESSION_CHANGE에 대한 해결책은 register이며 WndProc에서 응답합니다.

WM_WTSSESSION_CHANGE의 문서에 따르면 지원되는 최소 OS는 XP입니다. 이제는 Windows 2000이 더 이상 지원되지 않기 때문에 실제로 이전 버전에서이 기능을 사용할 수있는 경우 문서에 XP가 적습니다. 이 경우 빠른 웹 검색을 통해 실망 할 수도 있습니다.

세션 로그 오프 (보다는 화면 잠금), 당신은 WM_ENDSESSION 메시지의 lParam 값을 사용할 수 있어야를 통지합니다. ENDSESSION_LOGOFF 플래그가 있는지 확인하십시오.

+0

"등록"이라고 말하면 "RegisterWindowMessage()"http : // msdn.microsoft.com/ko-us/library/ms644947.aspx와 같은 API 호출을 의미합니까? 아니면 단순히 내 WndProc에 추가해야한다는 뜻입니까? –

+1

@Brent register가 WTSRegisterSessionNotification에 대한 링크임을 유의하십시오. 링크를 따라 가세요! Win2k에서'WM_WTSSESSION_CHANGE'를 사용할 수 없다고 확신합니다. –

+0

@ulidtko 편집 해 주셔서 감사합니다. –

관련 문제