Remoting des Windows Media Player-Steuerelements

[Das dieser Seite zugeordnete Feature Windows Medienwiedergabe SDK ist ein Legacyfeature. Es wurde von MediaPlayer ersetzt. MediaPlayer wurde für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, nach Möglichkeit für neuen Code MediaPlayer anstelle von Windows Medienwiedergabe SDK zu verwenden. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Wenn Sie das Windows Medienwiedergabe-Steuerelement in ein C++-Programm einbetten, können Sie es als Remoteerweiterung des vollständigen Modus des Players verwenden. Dies wird als "Remoting" des Windows Medienwiedergabe-Steuerelements bezeichnet und ermöglicht es Ihnen, alle Funktionen des Vollmodus Player bereitzustellen, ohne sie selbst zu implementieren.

Wenn Sie die Steuerung fernlegen, verwendet es dieselbe Wiedergabe-Engine wie der voll ausgestattete Modus des Players, und Ihre Benutzer können zwischen eingebettetem Modus (dem "angedockten" Zustand) und dem vollständigen Modus (der "abgedockte" Zustand) hin- und herwechseln, während die Wiedergabe digitaler Medien ununterbrochen fortgesetzt wird.

Aktivieren der Remoteeinbettung

Um die Remoteeinbettung des Windows Medienwiedergabe-Steuerelements zu ermöglichen, muss Ihr Programm die Schnittstellen IServiceProvider und IWMPRemoteMediaServices implementieren. IServiceProvider ist eine COM-Standardschnittstelle (Component Object Model) mit einer einzigen Methode namens QueryService. Windows Medienwiedergabe ruft diese Methode auf, um einen Zeiger auf eine IWMPRemoteMediaServices-Schnittstelle abzurufen.

IWMPRemoteMediaServices verfügt über mehrere Methoden, aber nur zwei von ihnen sind direkt relevant für Remoting. In GetApplicationName geben Sie den Namen Ihres Programms zurück, den Windows Medienwiedergabe der Liste Zu anderen Programm wechseln im Menü Ansicht hinzufügt. In GetServiceType geben Sie den Einbettungsmodus des Steuerelements an, indem Sie den Wert "Remote" oder "Local" zurückgeben. Wenn eine Remoteverbindung erfolgreich hergestellt wurde, gibt die get_isRemote-Methode der IWMPPlayer4-Schnittstelle true zurück.

Angeben eines exklusiven Online-Shops

Mit Windows Medienwiedergabe 11 kann eine Anwendung, die das Player-Steuerelement remote einbettet, einen exklusiven Online-Shop angeben. In diesem Fall ist die Dienstauswahl in Windows Medienwiedergabe deaktiviert, und nur der angegebene Online-Shop steht dem Benutzer zur Verfügung. Ausführliche Informationen zum Angeben eines exklusiven Online-Shops finden Sie unter Exklusive Online-Shops.

Andocken und Ausdocken

Die IWMPPlayer4-Schnittstelle bietet auch Zugriff auf die IWMPPlayerApplication-Schnittstelle über die get_playerApplication-Methode . Verwenden Sie IWMPPlayerApplication , um zwischen dem angedockten und dem nicht angedockten Zustand zu wechseln und den aktuellen angedockten Zustand und die Position der Video- oder Visualisierungsanzeige zu bestimmen.

Die IWMPPlayerApplication::switchToPlayerApplication-Methode hebt das Steuerelement auf, indem sie den vollständigen Modus von Windows Medienwiedergabe öffnet und die Video- oder Visualisierungsanzeige in den Bereich Jetzt Wiedergabe überträgt. Die IWMPPlayerApplication::switchToControl-Methode dockt das Steuerelement an, indem die Video- oder Visualisierungsanzeige an Ihr Programm übertragen und der vollständige Modus des Players geschlossen wird, wenn es geöffnet ist. Das Steuerelement kann auch angedockt werden, indem Sie ein Programm aus der Liste Zu anderes Programm wechseln auswählen oder den vollständigen Modus des Players schließen. In beiden Fällen werden alle digitalen Medien, die wiedergegeben werden, ohne Unterbrechung fortgesetzt.

Übertragen der Video- oder Visualisierungsanzeige

Wenn mehrere Programme mit eingebetteten, remoted Windows Medienwiedergabe Steuerelementen gleichzeitig ausgeführt werden, verwenden alle Steuerelemente dieselbe Wiedergabe-Engine. Sie haben auch den gleichen instance des vollständigen Modus des Spielers im ungedockten Zustand. Im angedockten Zustand kann jedoch nur ein Steuerelement das Video oder die Visualisierung anzeigen. Im nicht abgedockten Zustand zeigt nur der vollständige Modus des Players das Video oder die Visualisierung an. Die switchToControl-Methode funktioniert sowohl im angedockten als auch im nicht angedockten Status und überträgt die Video- oder Visualisierungsanzeige an das programm, das sie aufruft.

Der einzige Unterschied zwischen den angedockten und nicht angedockten Zuständen ist das Vorhandensein des vollständigen Modus von Windows Medienwiedergabe und dessen Besitz der Video- oder Visualisierungsanzeige. Im nicht angedockten Zustand sind alle eingebetteten, remotegesteuerten Steuerelemente, die derzeit ausgeführt werden, weiterhin sichtbar, und ihre Benutzeroberflächen sind weiterhin voll funktionsfähig. Wenn ein Video- oder Visualisierungsfenster vorhanden ist, ist es jedoch leer. Im angedockten Zustand besitzt nur eines der eingebetteten Remotesteuerelemente das Display, aber alle Benutzeroberflächen funktionieren weiterhin.

Ausblenden oder Ändern des Steuerelements im nicht abgedockten Zustand

Sie müssen eine eigene Implementierung bereitstellen, wenn Sie die Benutzeroberfläche eines eingebetteten Steuerelements im nicht abgedockten Zustand ausblenden oder ändern möchten oder wenn Ihr Programm nicht im Besitz der Anzeige ist. Sie können diese Änderungen vornehmen, wenn Sie das Steuerelement andocken und auskoppeln, oder Sie können sie als Reaktion auf Windows Medienwiedergabe Ereignisse vornehmen. Da der Player über die Menüoption Zu anderem Programm wechseln angedockt werden kann, ist es jedoch in der Regel besser, diese Funktionalität als Reaktion auf Ereignisse bereitzustellen.

Sie können Ereignishandler für die Ereignisse SwitchedToPlayerApplication und SwitchedToControl implementieren oder einen einzelnen Ereignishandler für das PlayerDockedStateChange-Ereignis implementieren. Im letzteren Fall können Sie den angedockten Zustand ermitteln, indem Sie IWMPPlayerApplication::get_playerDocked aufrufen. Verwenden Sie in beiden Fällen IWMPPlayerApplication::get_hasDisplay , um zu bestimmen, ob Ihr Programm die Video- oder Visualisierungsanzeige besitzt.

Erneutes Einrichten einer Remoteverbindung

Unter bestimmten Umständen schlägt die Verbindung zwischen einem remoted, eingebetteten Steuerelement und dem eigenständigen Player fehl, was ihre Zeiger auf die Windows Medienwiedergabe Schnittstellen ungültig macht. Windows Medienwiedergabe versucht automatisch, die Verbindung wiederherzustellen, und löst das PlayerReconnect-Ereignis aus, um diesen Versuch zu signalisieren. Obwohl die Wiederherstellung der Verbindung automatisch erfolgt, müssen Sie einen Ereignishandler für dieses Ereignis bereitstellen, wenn Sie Ihre ungültigen Zeiger freigeben und neue abrufen möchten, damit Sie über die neue Verbindung auf den eigenständigen Player zugreifen können.

Steuern des nicht abgedockten Players

Alle Remoteinstanzen des Windows Medienwiedergabe-Steuerelements können den vollständigen Modus des Players unabhängig vom angedockten Zustand bearbeiten. Features, die keine Relevanz für den vollständigen Modus des Players haben, werden jedoch ignoriert, bis das Windows Medienwiedergabe-Steuerelement angedockt ist. Dies umfasst Eigenschaften des IWMPPlayers und abgeleiteter Schnittstellen, z. B . enabled, enableContextMenu, uiMode und windowlessVideo.

Fehlerdialogfelder

Aus einem remoted Windows Medienwiedergabe-Steuerelement instance die Einstellungen.Die enableErrorDialogs-Eigenschaft verhält sich auf eine bestimmte Weise. Es gelten die folgenden Regeln:

  • Wenn Windows Medienwiedergabe abgedockt wird (die Windows Medienwiedergabe Benutzeroberfläche ist sichtbar), wird die enableErrorDialogs-Eigenschaft ignoriert, und Fehlerdialogfelder werden vom Player behandelt.
  • Wenn Windows Medienwiedergabe angedockt ist, gilt der von jedem remote instance des Steuerelements für enableErrorDialogs angegebene Wert nur für das einzelne Steuerelement instance. Das heißt, wenn ein bestimmtes Steuerelement instance den Wert "true" für enableErrorDialogs angibt, zeigt nur dieses instance ein Dialogfeld an, wenn ein Fehler auftritt, wenn alle anderen Instanzen des Steuerelements den Wert "false" angegeben haben.

Remoting im Hintergrund

Sie sollten vermeiden, dass ein remoted instance des Players im Hintergrund ausgeführt wird, wenn das Steuerelement nicht verwendet wird. Da das remoted Player-Steuerelement instance seine Wiedergabe-Engine mit dem Vollmodus Player teilt, kann es zu unerwartetem Verhalten führen, wenn ein Hintergrund instance ausgeführt wird. Beispielsweise kann der Benutzer den Vollmodus Player schließen, während eine Datei abgespielt wird. Der Benutzer würde erwarten, dass die Dateiwiedergabe vollständig beendet wird, wenn der Player geschlossen wird, aber audio kann weiterhin wiedergegeben werden, da die Wiedergabe-Engine weiterhin aktiv ist.

Beispiele

Das Windows Medienwiedergabe SDK-Setuppaket installiert Beispiele, die Remoting veranschaulichen. Weitere Informationen finden Sie in den RemoteSkin- und WMPML-Beispielen.

Beispiele

Verwenden des Windows Medienwiedergabe-Steuerelements in einem C++-Programm