저는 현재 Windows 플랫폼 용 응용 프로그램을 개발 중이며 QuickTime 비디오를 재생할 수 있습니다. 대상 OS 버전은 Windows XP, Windows Vista 및 Windows 7입니다.QuickTime 컨트롤을 올바르게 처리하십시오.
Apple ActiveX QuickTime 컨트롤 2.0 (C#)을 성공적으로 사용했으며 Windows XP에서 모든 것이 잘 작동합니다.
그러나 Vista 및 Windows 7에서는 컨트롤을 올바르게 처리하는 데 문제가 있습니다. "재현 할 단계"는 다음과 같습니다. - 런타임시 동적으로 빠른 시간 컨트롤을 만들고이를 패널에 배치합니다.
성공적으로 동영상을 재생합니다.
어떤 시점에서 신청서 양식을 닫습니다. 응용 프로그램 창이 파괴되고 응용 프로그램이 백그라운드에서 계속 실행됩니다 (비디오 동기화와 같은 작업 수행). 이 시점에서 IDisposable 패턴을 사용하여 컨트롤이 배치됩니다. 내가 ActiveX 컨트롤에서 Movie 객체를 명시 적으로 처리 할 수없는 이유는 다음과 같습니다. "기본 RCW에서 분리 된 COM 객체를 사용할 수 없습니다."; 난 그냥 (AxQTOControlLib.AxQTControl) player.Dispose(); Windows XP에서는 괜찮 았지만 Vista 및 7에는 적용되지 않습니다.
응용 프로그램을 백그라운드에서 실행중인 도구 모음에서 복원하고 비디오를 다시 열어보십시오. 이 시점에서 AccessViolationException "보호 된 메모리 읽기/쓰기 시도"가 발생합니다.
내 질문은 :
왜 이것은 단지 Vista 및 Windows 7에서 무슨 일이 일어나고?
XP에서 숨겨진 누수가 있습니까?
런타임에 컨트롤을 만들 때 (해당 무비 객체와 함께) 컨트롤을 배치 할 때 권장되는 방법은 무엇입니까? 양식이되기 전에 QuickTimeTerminate() 호출에 의해 fallowed (I이 분리 내가 적절한 문서를 찾을 수 없기 때문에 무엇을 의미하는지 지금은 안하지만) 지금은 명시 적 Movie.Disconnect() 호출을 사용하고
닫은. 내 방법이 작동하는 동안 일종의 디자인이 깨져서 이렇게하는 더 좋은 방법을 알고 싶습니다. 난 그냥 내 방법은 workink되지 않도록 발견 :
은 Mosu '업데이트를 주셔서 감사합니다. 플레이어에게 사용합니다 : QuickTime 컨트롤과 Windows Media Player 컨트롤 (ActiveX 둘 다)과 파일 재생에 실패 할 때 다른 플레이어가 사용됩니다. WindowsMedia 플레이어의 출력을보고 있었고 그 메소가 작동하고 있다고 생각했습니다. 그래서 내 수정이 전혀 작동하지 않습니다.
헉, 상당히 까다로운 제어. 양식을 폐기하는 대신 양식을 숨기십시오. –
답장을 보내 주셔서 감사합니다. 다른 모든 컨트롤 (컨트롤 패널이있는 패널 포함)이 삭제되기 때문에이 작업을 수행 할 수 없습니다. 응용 프로그램이 성숙 상태입니다. 이 기능을 추가하라는 요청을 받았습니다. 따라서 이것은 선택 사항이 아닙니다. – mosu
불행히도 같은 문제가 있습니다. –