문제

우리는 사용자의 PC에서 애플리케이션을 업데이트하는 야간 프로세스를 가지고 있으며 응용 프로그램을 중단하고 다시 백업해야합니다 (해당 프로세스 변경에 참여하지 않으려 고하지 않음).

문제는 유효한 화면이 필요한 시작시 Windows Appbar를 구축하고 있으며 시스템이 잠겨 있으면 화면 클래스에 하나가 없다는 것입니다. 따라서 시각 효과 중 어느 것도 활성화되지 않았으며 실제로 못 생겼습니다.

우리가 현재 주변에있는 유일한 방법은 잠긴 화면을 감지하고 사용자가 데스크탑을 잠금 해제 할 때까지 회전하고 기다린 다음 계속 시작하는 것입니다. 이것은 우리의 워크 플로의 핵심 부분이기 때문에 그것을 내려 놓는 것은 옵션이 아니며, 전날 밤 그런 식으로 떠나면 그것이 일어나고 실행될 것으로 기대합니다.

어떤 아이디어 ?? 디스플레이 정보를 어디서나 찾을 수는 없지만 사용자가 여전히 로그인되었으므로 어딘가에 저장해야합니다.

화면의 내용. 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}
도움이 되었습니까?

해결책

이를위한 깨끗한 솔루션은 없습니다. Windows는 작업장이 잠겨 있고 "잘못된"데스크탑이 활성화되어 있음을 감지 할 수있는 방법을 제공하지 않습니다. 세션 스위치, 샘플 코드 만 감지 할 수 있습니다. 여기에. 이 작업을 수행하려면이 코드를 앱에 포함시켜야하며 다시 시작할 때 다시 읽을 수있는 빵 부스러기를 남겨 두어야합니다. 앱이 영구적으로 고착 될 수 없도록 한 번 사용한 후에는 다시 설정해야합니다.

다른 팁

이 화면 잠금 문제는 사용중인 버전, 화면을 잠그는 GINA를 사용하는 XP와 ContentProvider를 사용하는 Vista를 사용하는 XP는 궁극적으로이를 담당합니다.

화면이 잠겨 있는지 확인하는 유일한 방법은 스크린 세이버가 차기입니다. SystemsParameterInfo, 스크린 세이버가 활성인지 아닌지 알아 내기 위해 spi_getscreensaverrunning 그리고 SPI_GETSCREENSAVESECURE Winkey + L을 눌러 스크린 세이버를 눌러 지정된 기간이 지나면 활동이없는 경우 Gina 또는 ContentProvider를 차기 화면으로 대체 할 때 GINA 또는 컨텐츠 제공 업체가 트리거 될지 확인합니다. .. Windows에서 보안 로깅 정보에 대해 여기에 게시 된 두 가지 관련 링크가 포함되어 있습니다 ...

약간의 작업이 필요하지만 EnumDisplayDevices, enumdisplaySettingSex, MonitorFrompoint, GetMonitorInfo 모두 user32에서 GetMonitorInfo를 사용하고 장치의 스크린 샷을 가져올 수 있습니다.

PC가 잠겨 있거나 활성 화면 보호기가 있으면 화면 캡처는 항상 베이지 색입니다. 시스템이 잠겨 있음을 알기 위해 해당 조건을 확인할 수 있습니다. 이것은 시스템에도 적용되는 시스템에서도 작동합니다 (예 : 씬 클라이언트에서 XP VDI.)

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top