2014-10-17 2 views
2

서비스 인 응용 프로그램의 일부로 Windows에서 SDL을 사용해야합니다.창없는 SDL (Windows 서비스)

응용 프로그램 기반은 SDL로 연 3D 파일의 스크린 샷을 찍는 것으로, 바로 사용할 수 있습니다.

문제는 응용 프로그램이 Windows의 서비스 컨텍스트에서 시작될 때 SDL_Init이 발생한다는 것입니다. 사용할 수

없음 표시

어쨌든 내 앱을 필요로하지 않습니다, 나는 창을 사용하지 않는 경우 나 키보드와 마우스로부터의 입력이없는 것을 알고하지 않습니다.

Windows에서 화면을 벗어난 방법이 있습니까? 나는 mesa/osmesa에 대해 들었지만 리눅스에만있는 것 같습니다.

+0

서비스에서 어떻게 스크린 샷을 찍을 것입니까? 서비스는 세션 0에서 실행되며 대화 형 세션에서 데스크톱을 볼 수 없습니다. –

+0

스크린 샷은 glReadPixels() 메소드를 사용하여 SDL 앱에서 캡처 한 것입니다. 그러나 화면의 픽셀을 나타내는 오프 스크린 버퍼가있는 경우이를 적용 할 수 있습니다. – strategesim

+0

그래서 스크린 샷을 찍는 데스크톱에서 프로세스를 처리 한 다음 이미지를 처리하는 서비스 프로세스로 보내려합니다. 옳은? –

답변

0

이것은 Windows 레지스트리에서 서비스 속성 및 일부 트릭을 변경함으로써 수행 할 수 있습니다. 나는 시도하지 않았지만이 게시물과 그것에 대한 설명은 유용 할 수 있습니다 : https://lostechies.com/keithdahlby/2011/08/13/allowing-a-windows-service-to-interact-with-desktop-without-localsystem/. 다음은 주제에 대한 MSDN 항목입니다 ("대화 형 서비스 사용"절 참조) : https://msdn.microsoft.com/en-us/library/windows/desktop/ms683502%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396. 최소한 MSDN 기사는 그래픽과의 서비스 상호 작용과 관련되어 있지만 GUI와 관련하여 사용자와의 서비스 상호 작용 관점에서 문제를 해결하는 것으로 보입니다.

일단 SDL을 사용하는 응용 프로그램을 발견하고 서비스에서 시작할 때 올바르게 초기화하지 못했습니다. 환경 변수 SDL_VIDEODRIVER를 '더미'로 설정하면 나에게 도움이되었습니다. 이 설정으로 응용 프로그램의 그래픽 기능이 정상적으로 작동하는 것처럼 보입니다 (3D 파일 열기와 관련된 사용 사례에 충분한 지 여부는 확실하지 않지만).