2010-03-15 3 views
3

저는 현재 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 플레이어의 출력을보고 있었고 그 메소가 작동하고 있다고 생각했습니다. 그래서 내 수정이 전혀 작동하지 않습니다.

+0

헉, 상당히 까다로운 제어. 양식을 폐기하는 대신 양식을 숨기십시오. –

+0

답장을 보내 주셔서 감사합니다. 다른 모든 컨트롤 (컨트롤 패널이있는 패널 포함)이 삭제되기 때문에이 작업을 수행 할 수 없습니다. 응용 프로그램이 성숙 상태입니다. 이 기능을 추가하라는 요청을 받았습니다. 따라서 이것은 선택 사항이 아닙니다. – mosu

+0

불행히도 같은 문제가 있습니다. –

답변

1

많은 사람들이이 오류가있는 것으로 보입니다.

이 페이지는 흥미로운 접근 방식을 제공합니다 : http://www.theusenetarchive.com/usenet-message-how-to-properly-destroy-quicktime-activex-object-10384503.htm

충돌이 여전히 열려있는 처리하기 때문에 파일을 발생합니다.  FileName 또는 URL 속성에 null 문자열 을 연결하여 Quicktime 컨트롤에서 영화를 언로드했습니다.   Quicktime이 을 올바르게 처리하지 못하고 원래 파일이 열려 있습니다.   그래서 대신 검정색이었던 실제 이미지 파일 (Quicktime은 이미지도 포함)에 대한 경로를 연결했습니다.   Eveything은 이제 괜찮아 보입니다.