Windows Media Player 컨트롤 원격 제어

[이 페이지와 연결된 기능인 Windows 미디어 플레이어 SDK는 레거시 기능입니다. MediaPlayer로 대체되었습니다. MediaPlayer는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows 미디어 플레이어 SDK 대신 MediaPlayer를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

C++ 프로그램에 Windows 미디어 플레이어 컨트롤을 포함하는 경우 플레이어의 전체 모드의 원격 확장으로 사용할 수 있습니다. 이를 Windows 미디어 플레이어 컨트롤을 "원격"이라고 하며, 직접 구현하지 않고도 전체 모드 Player의 모든 기능을 제공할 수 있습니다.

컨트롤을 원격으로 사용하면 플레이어의 전체 모드와 동일한 재생 엔진을 공유하고 사용자는 포함된 모드("도킹됨" 상태)와 전체 모드("도킹되지 않은" 상태) 간에 전환할 수 있으며 디지털 미디어 재생은 중단 없이 계속됩니다.

원격 포함 사용

Windows 미디어 플레이어 컨트롤의 원격 포함을 사용하도록 설정하려면 프로그램에서 IServiceProviderIWMPRemoteMediaServices 인터페이스를 구현해야 합니다. IServiceProviderQueryService라는 단일 메서드를 사용하는 표준 COM(구성 요소 개체 모델) 인터페이스입니다. Windows 미디어 플레이어 이 메서드를 호출하여 IWMPRemoteMediaServices 인터페이스에 대한 포인터를 검색합니다.

IWMPRemoteMediaServices 에는 여러 메서드가 있지만 그 중 두 가지만 원격과 직접 관련이 있습니다. GetApplicationName에서 프로그램 이름을 반환합니다. 그러면 Windows 미디어 플레이어 보기 메뉴의 다른 프로그램으로 전환 목록에 추가됩니다. GetServiceType에서 "Remote" 또는 "Local" 값을 반환하여 컨트롤의 포함 모드를 나타냅니다. 원격 연결이 성공적으로 설정되면 IWMPPlayer4 인터페이스의 get_isRemote 메서드가 true를 반환합니다.

단독 온라인 스토어 지정

Windows 미디어 플레이어 11을 사용하면 플레이어 컨트롤을 원격으로 포함하는 애플리케이션이 독점 온라인 스토어를 지정할 수 있습니다. 이 경우 Windows 미디어 플레이어 서비스 선택기가 사용하지 않도록 설정되고 사용자가 지정된 온라인 저장소만 사용할 수 있습니다. 독점 온라인 스토어를 지정하는 방법에 대한 자세한 내용은 독점 온라인 스토어를 참조하세요.

도킹 및 도킹 취소

IWMPPlayer4 인터페이스는 get_playerApplication 메서드를 통해 IWMPPlayerApplication 인터페이스에 대한 액세스도 제공합니다. IWMPPlayerApplication을 사용하여 도킹된 상태와 도킹 해제 상태 간에 전환하고 현재 도킹된 상태와 비디오 또는 시각화 디스플레이의 위치를 확인합니다.

IWMPPlayerApplication::switchToPlayerApplication 메서드는 Windows 미디어 플레이어 전체 모드를 열고 비디오 또는 시각화 디스플레이를 지금 재생 창으로 전송하여 컨트롤의 도킹을 취소합니다. IWMPPlayerApplication::switchToControl 메서드는 비디오 또는 시각화 디스플레이를 프로그램에 전송하고 열려 있는 경우 플레이어의 전체 모드를 닫아 컨트롤을 도킹합니다. 다른 프로그램으로 전환 목록에서 프로그램을 선택하거나 플레이어의 전체 모드 닫아 컨트롤을 도킹할 수도 있습니다. 두 경우 모두 재생 중인 모든 디지털 미디어는 중단 없이 계속됩니다.

비디오 또는 시각화 디스플레이 전송

포함된 원격 Windows 미디어 플레이어 컨트롤이 있는 여러 프로그램이 동시에 실행되면 모든 컨트롤이 동일한 재생 엔진을 공유합니다. 또한 도킹 해제된 상태에서 플레이어의 전체 모드와 동일한 instance 공유합니다. 그러나 도킹된 상태에서는 하나의 컨트롤만 비디오 또는 시각화를 표시할 수 있습니다. 도킹 해제된 상태에서 플레이어의 전체 모드만 비디오 또는 시각화를 표시합니다. switchToControl 메서드는 도킹된 상태와 도킹 해제 상태 모두에서 작동하며 비디오 또는 시각화 디스플레이를 호출하는 프로그램으로 전송합니다.

도킹된 상태와 도킹되지 않은 상태의 유일한 차이점은 전체 Windows 미디어 플레이어 모드의 존재와 비디오 또는 시각화 디스플레이의 소유권입니다. 도킹 해제된 상태에서는 현재 실행 중인 모든 포함된 원격 컨트롤이 계속 표시되며 해당 사용자 인터페이스는 여전히 완벽하게 작동합니다. 그러나 비디오 또는 시각화 창이 있으면 비어 있습니다. 도킹된 상태에서는 포함된 원격 컨트롤 중 하나만 디스플레이를 소유하지만 모든 사용자 인터페이스는 계속 작동합니다.

도킹 해제된 상태에서 컨트롤 숨기기 또는 변경

도킹 해제된 상태에서 포함된 컨트롤의 사용자 인터페이스를 숨기거나 변경하거나 프로그램이 디스플레이를 소유하지 않는 경우 고유한 구현을 제공해야 합니다. 컨트롤을 도킹 및 도킹 해제할 때 이러한 변경을 수행하거나 Windows 미디어 플레이어 이벤트에 대한 응답으로 변경할 수 있습니다. 그러나 플레이어는 다른 프로그램으로 전환 메뉴 옵션을 통해 도킹할 수 있으므로 일반적으로 이벤트에 대한 응답으로 이 기능을 제공하는 것이 좋습니다.

SwitchedToPlayerApplicationSwitchedToControl 이벤트에 대한 이벤트 처리기를 구현하거나 PlayerDockedStateChange 이벤트에 대한 단일 이벤트 처리기를 구현할 수 있습니다. 후자의 경우 IWMPPlayerApplication::get_playerDocked 호출하여 도킹된 상태를 확인할 수 있습니다. 두 경우 모두 IWMPPlayerApplication::get_hasDisplay 사용하여 프로그램이 비디오 또는 시각화 디스플레이를 소유하는지 여부를 확인합니다.

원격 연결 다시 설정

특정 상황에서는 원격 포함 컨트롤과 독립 실행형 플레이어 간의 연결이 실패하여 Windows 미디어 플레이어 인터페이스에 대한 포인터가 무효화됩니다. Windows 미디어 플레이어 자동으로 다시 연결을 시도하고 PlayerReconnect 이벤트를 실행하여 이 시도를 신호로 보냅니다. 다시 연결은 자동이지만 새 연결을 통해 독립 실행형 플레이어에 액세스할 수 있도록 잘못된 포인터를 해제하고 새 포인터를 검색하려면 이 이벤트에 대한 이벤트 처리기를 제공해야 합니다.

도킹 해제된 플레이어 제어

Windows 미디어 플레이어 컨트롤의 모든 원격 인스턴스는 도킹된 상태에 관계없이 플레이어의 전체 모드를 조작할 수 있습니다. 그러나 플레이어의 전체 모드와 관련이 없는 기능은 Windows 미디어 플레이어 컨트롤이 도킹될 때까지 무시됩니다. 여기에는 IWMPPlayer 및 파생 인터페이스(예: enabled, enableContextMenu, uiModewindowlessVideo)의 속성이 포함됩니다.

오류 대화 상자

원격 Windows 미디어 플레이어 컨트롤 instance 설정입니다.enableErrorDialogs 속성은 특정 방식으로 동작합니다. 다음 규칙이 적용됩니다.

  • Windows 미디어 플레이어 도킹 해제되면(Windows 미디어 플레이어 UI가 표시됨) enableErrorDialogs 속성이 무시되고 플레이어에서 오류 대화 상자가 처리됩니다.
  • Windows 미디어 플레이어 도킹되면 enableErrorDialogs에 대한 컨트롤의 원격 instance 지정된 값은 개별 컨트롤 instance만 적용됩니다. 즉, 특정 컨트롤 instance enableErrorDialogs에 대해 "true" 값을 지정하는 경우 컨트롤의 다른 모든 인스턴스가 "false" 값을 지정한 경우 오류가 발생할 때 해당 instance 대화 상자만 표시됩니다.

백그라운드에서 원격 작업

컨트롤이 사용되지 않는 동안 백그라운드에서 플레이어의 원격 instance 계속 실행하지 않아야 합니다. 원격 플레이어 컨트롤 instance 재생 엔진을 전체 모드 Player와 공유하므로 백그라운드 instance 계속 실행하면 예기치 않은 동작이 발생할 수 있습니다. 예를 들어 사용자가 파일을 재생하는 동안 전체 모드 Player를 닫을 수 있습니다. 사용자는 플레이어가 닫히면 파일 재생이 완전히 중지될 것으로 예상하지만 재생 엔진이 여전히 활성 상태이기 때문에 오디오가 계속 재생될 수 있습니다.

샘플

Windows 미디어 플레이어 SDK 설치 패키지는 원격을 보여 주는 샘플을 설치합니다. 자세한 내용은 RemoteSkin 및 WMPML 샘플을 참조하세요.

샘플

C++ 프로그램에서 Windows 미디어 플레이어 컨트롤 사용