2010-06-18 3 views
0

카페테리아의 대형 디스플레이에 연결된 컴퓨터에서 실행되는 C# 응용 프로그램이 있습니다. 응용 프로그램은 모든 PowerPoint 파일을 폴더에서 가져 와서 슬라이드 쇼로 계속 실행합니다. 누군가 슬라이드에 동영상 클립을 삽입하기로 결정할 때까지 모든 것이 잘 작동했습니다. 문제는 영화가 시작되지 않는다는 것입니다. PowerPoint에서 프리젠 테이션을 열고 쇼를 실행하면 프리젠 테이션을 마우스 오른쪽 버튼으로 클릭하고 '표시'를 클릭하면됩니다. 프레젠테이션을 열고 슬라이드 쇼를 시작하기 위해 사용하는 코드는 다음과 같습니다. PowerPoint SlideShowSettings.Run()이 포함 된 비디오를 실행하지 않습니다.

pres = app.Presentations.Open(pptPath, MsoTriState.msoTrue, MsoTriState.msoTrue, MMsoTriState.msoFals); 
pres.SlideShowSettings.Run(); 

는 나 또한 영화를 시작하는 Run() 방법을 얻기 위해 설정해야 할 다른 뭔가가 있나요?

편집 : 문제의 프레젠테이션에는 동영상이 포함 된 슬라이드 하나만있었습니다. 다른 슬라이드를 추가하면 정상적으로 작동합니다. 또한 이전에 슬라이드 추가 시도하고 동일한 문제가 있었으므로 문제는 프레젠테이션의 마지막 슬라이드에만 존재합니다.

답변

-2

발견. 한 슬라이드 쇼의 끝을 처리하고 다음 슬라이드를 시작하는 프레젠테이션의 app_SlideShowNextSlide 이벤트 처리기에 thread.sleep 문이 있습니다. 나는이 시점에서 생각하고 있지 않았으며이 코드는 슬라이드 쇼 자체에서 동일한 스레드에서 실행 중이었습니다. 대신 타이머 객체를 만들고 필요한 코드를 타이머의 elapsed 이벤트 처리기로 옮겼습니다.

+0

-1. 'SlideShowNextSlide'에 코드가 있다고 언급하지 않았습니다. –

1

PowerPoint의 애니메이션 (비디오, 오디오, 사용자 정의 모션 경로 등)은 SlideShowWindow에 포커스가있을 때만 재생됩니다. 이것이 의미하는 바는 앱을 실행하고 PPT를 시작할 때 앱이 여전히 포커스를 유지하므로 애니메이션이 실행되지 않는다는 것입니다.하지만 실행중인 덱을 수동으로 조작하는 것을 막을 수는 없습니다.

이 주위에 몇 가지 방법이 있습니다

  1. 당신은 당신의 SlideShowWindow 앞으로 가져 오는 API SetWindow 로 호출 할 수 있습니다. 내 생각에 에서 그것을 수행 할 수있는 좋은 방법이 아닙니다.
  2. 가장 쉬운 방법은 .ppt/.pptx를 .pps/.ppsx (PowerPoint 쇼)에 저장하는 것입니다. 이를 통해 은 동일한 코드를 사용하여 실행할 수 있으며 이 자동으로 실행되어 초점 을 자동으로 가져옵니다 (그리고 애니메이션 [동영상, 기타]는 의도 한대로 실행됩니다).
+0

이미 자동으로 재생되도록 설정되어 있습니다. 수동으로 슬라이드 쇼를 실행하면 모든 것이 작동합니다. 질문의 코드를 사용하여 슬라이드 쇼를 실행하고 동영상이 프레젠테이션의 마지막 슬라이드에있는 경우에만 문제가 발생합니다. – AdmSteck

+0

@AdmSteck. 알았어. 너에게 좋은 소식과 나쁜 소식이있어. 답변이 업데이트되었습니다. –