2010-03-15 3 views
0

우리는 사용자의 PC에서 응용 프로그램을 업데이트하는 야간 프로세스를 가지고 있습니다.이 프로세스는 응용 프로그램을 다시 작동시키고 다시 부팅해야합니다 (프로세스 변경을 고려하지 않음).Windows 시스템이 잠겨있는 동안 화면 정보 (.NET)

문제는 유효한 실행 화면이 필요한 시작시 Windows AppBar를 빌드하고 시스템이 잠겨있을 때 Screen 클래스에 잠금이 설정되어 있지 않다는 것입니다. 따라서 시각적 효과는 활성화되지 않고 실제로보기 흉하게 나타납니다.

우리가 현재 가지고있는 유일한 방법은 잠긴 화면을 감지하고 사용자가 바탕 화면의 잠금을 해제하고 실행을 계속할 때까지 기다리는 것입니다. 사용자의 워크 플로에서 중요한 부분을 차지하므로 옵션을 선택하지 않아도됩니다. 예를 들어, 밤에 그대로두고 나 간다면 실행 및 실행되기를 기대할 수 있습니다.

어떤 아이디어 ?? 난 아무데도 디스플레이 정보를 찾을 수 없습니다,하지만 사용자가 여전히 로그인되어 있기 때문에, 어딘가를 저장할 수있다

다음은 Screen.AllScreens 배열의 내용 :.

를 ** 잠긴 경우 :

Device Name : DISPLAY 
Primary  : True 
Bits Per Pixel : 0 
Bounds   : {X=-1280,Y=0,Width=2560,Height=1024} 
Working Area : {X=0,Y=0,Width=1280,Height=1024} 

** 잠금 해제 :

Device Name : \\.\DISPLAY1 
Primary  : True 
Bits Per Pixel : 32 
Bounds   : {X=0,Y=0,Width=1280,Height=1024} 
Working Area : {X=0,Y=0,Width=1280,Height=994} 

Device Name : \\.\DISPLAY2 
Primary  : False 
Bits Per Pixel : 32 
Bounds   : {X=-1280,Y=0,Width=1280,Height=1024} 
Working Area : {X=-1280,Y=0,Width=1280,Height=964} 

답변

1

이에 대한 깨끗한 해결책이 없다가, Windows는 워크 스테이션이 잠겨하고 "잘못된"바탕 화면이 활성화되어 있는지 감지 할 수있는 방법을 제공하지 않습니다. 세션 스위치, 샘플 코드 is here 만 감지 할 수 있습니다. 이 작업을하려면 앱에이 코드를 포함시키고 다시 시작될 때 읽을 수있는 사이트 이동 경로를 남겨야합니다. 앱을 한 번 사용한 후에 앱을 재설정해야 앱이 영구적으로 멈추지 않습니다.

0

이 화면 잠금 문제 중 하나, 화면 잠금 GINA를 사용하여 XP 사용하고있는 버전에 따라 달라집니다 d Vista에서는 ContentProvider를 사용하므로이 두 메커니즘 모두 궁극적 인 책임이 있습니다. SPI_GETSCREENSAVERRUNNING와 -

화면이 잠겨 있는지 확인하는 유일한 방법은 스크린 세이버에서 개막 (이 쉽게 화면 보호기가 활성화인지 아닌지 알아, SystemsParameterInfo를 조회하기 위해 PInvoke를 실행하여 조회 할 수있다 SPI_GETSCREENSAVESECURE) GINA 또는 Content Provider를 트리거 할 것인지 결정합니다. WinKey + L을 눌러 화면 보호기를 시작할 때, 지정된 시간 후에 아무런 작업도 수행하지 않으면 GINA 또는 ContentProvider가 실행되어 화면 보호기가 화면 잠금 ... 여기에는 Windows에서 보안 로깅 정보에 대해 게시 된 두 개의 관련 링크가 포함되어 있습니다 ...

0

약간의 작업이 필요하지만 EnumDisplayDevices, EnumDisplaySettingsEx, MonitorFromPoint, GetMonitorInfo를 모두 user32에서 활용하고 장치의 스크린 샷을 캡처 할 수 있습니다.

PC가 잠겨 있거나 활성 화면 보호기가있는 경우 화면 캡처는 항상 베이지 색상입니다. 시스템이 잠겨 있는지를 알기 위해 그 상태를 점검 할 수 있습니다. 이것은 RDPed되는 시스템에서도 작동합니다 (예 : 씬 클라이언트에서 XP VDI로).)

적어도 내 환경에서 작동합니다. 코드 샘플은 인터넷 검색에서 찾을 수 있습니다.

관련 문제