Gestione remota del controllo di Windows Media Player

[La funzionalità associata a questa pagina, Lettore multimediale Windows SDK, è una funzionalità legacy. È stato sostituito da MediaPlayer. MediaPlayer è stato ottimizzato per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer invece di Lettore multimediale Windows SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Quando si incorpora il controllo Lettore multimediale Windows in un programma C++, è possibile usarlo come estensione remota della modalità completa del lettore. Si tratta di "comunicazione remota" del controllo Lettore multimediale Windows e consente di fornire tutte le funzionalità del lettore in modalità completa senza implementarle manualmente.

Quando il controllo è remoto, condivide lo stesso motore di riproduzione della modalità completa del lettore e gli utenti possono passare dalla modalità incorporata (lo stato "ancorato") alla modalità completa (lo stato "non ancorato") mentre la riproduzione multimediale digitale continua senza interruzioni.

Abilitazione dell'incorporamento remoto

Per abilitare l'incorporamento remoto del controllo Lettore multimediale Windows, il programma deve implementare le interfacce IServiceProvider e IWMPRemoteMediaServices. IServiceProvider è un'interfaccia COM (Component Object Model) standard con un singolo metodo denominato QueryService. Lettore multimediale Windows chiama questo metodo per recuperare un puntatore a un'interfaccia IWMPRemoteMediaServices.

IWMPRemoteMediaServices include diversi metodi, ma solo due di essi sono direttamente rilevanti per la comunicazione remota. In GetApplicationName viene restituito il nome del programma, che Lettore multimediale Windows aggiunge all'elenco Passa ad altro programma dal menu Visualizza. In GetServiceType si indica la modalità di incorporamento del controllo restituendo un valore "Remote" o "Local". Se viene stabilita correttamente una connessione remota, il metodo get_isRemote dell'interfaccia IWMPPlayer4 restituisce true.

Specifica di un negozio online esclusivo

Con Lettore multimediale Windows 11, un'applicazione che incorpora il controllo Player in remoto può specificare un negozio online esclusivo. In tal caso, il selettore del servizio in Lettore multimediale Windows è disabilitato e solo l'archivio online specificato è disponibile per l'utente. Per informazioni dettagliate su come specificare un negozio online esclusivo, vedere Exclusive Online Stores.For detailed information about how to specify an exclusive online store, see Exclusive Online Stores.

Ancoraggio e annullamento dell'ancoraggio

L'interfaccia IWMPPlayer4 fornisce anche l'accesso all'interfaccia IWMPPlayerApplication tramite il metodo get_playerApplication . Usa IWMPPlayerApplication per passare tra gli stati ancorati e non ancorati e per determinare lo stato ancorato corrente e la posizione del video o della visualizzazione.

Il metodo IWMPPlayerApplication::switchToPlayerApplication annulla l'docing del controllo aprendo la modalità completa di Lettore multimediale Windows e trasferendo il video o la visualizzazione della visualizzazione nel riquadro Ora in riproduzione. Il metodo IWMPPlayerApplication::switchToControl ancora il controllo trasferendo il video o la visualizzazione al programma e chiudendo la modalità completa del lettore, se aperta. Il controllo può essere ancorato anche selezionando un programma dall'elenco Passa ad altro programma o chiudendo la modalità completa del lettore. In entrambi i casi, tutti i supporti digitali riprodotti continuano senza interruzioni.

Trasferimento della visualizzazione video o visualizzazione

Quando più programmi con controlli Lettore multimediale Windows incorporati e remoti vengono eseguiti contemporaneamente, tutti i controlli condividono lo stesso motore di riproduzione. Condividono anche la stessa istanza della modalità completa del lettore nello stato non ancorato.They also share the same instance of the full mode of the Player in the undocked state. Nello stato ancorato, tuttavia, un solo controllo può visualizzare il video o la visualizzazione. Nello stato non ancorato, solo la modalità completa del lettore visualizza il video o la visualizzazione. Il metodo switchToControl funziona sia negli stati ancorati che non ancorati e trasferirà il video o la visualizzazione in qualsiasi programma lo chiami.

L'unica differenza tra gli stati ancorati e non ancorati è la presenza della modalità completa di Lettore multimediale Windows e della proprietà del video o della visualizzazione. Nello stato non ancorato, tutti i controlli remoti incorporati attualmente in esecuzione sono ancora visibili e le relative interfacce utente sono ancora completamente funzionanti. Se è presente un video o una finestra di visualizzazione, tuttavia, è vuota. Nello stato ancorato, solo uno dei controlli remoti incorporati possiede lo schermo, ma tutte le interfacce utente continuano a funzionare.

Nascondere o modificare il controllo nello stato non ancorato

È necessario fornire un'implementazione personalizzata se si desidera nascondere o modificare l'interfaccia utente di un controllo incorporato nello stato non ancorato o quando il programma non è proprietario della visualizzazione. È possibile apportare queste modifiche quando si ancora e si scollega il controllo oppure è possibile renderle in risposta a Lettore multimediale Windows eventi. Poiché il lettore può essere ancorato tramite l'opzione di menu Passa ad altro programma , tuttavia, è in genere preferibile fornire questa funzionalità in risposta agli eventi.

Puoi implementare i gestori eventi per gli eventi SwitchedToPlayerApplication e SwitchedToControl oppure puoi implementare un singolo gestore eventi per l'evento PlayerDockedStateChange . Nel secondo caso, puoi determinare lo stato ancorato chiamando IWMPPlayerApplication::get_playerDocked. In entrambi i casi, usa IWMPPlayerApplication::get_hasDisplay per determinare se il programma è proprietario del video o della visualizzazione.

Ristabilire una connessione remota

In determinate circostanze, la connessione tra un controllo remoto, incorporato e il lettore autonomo avrà esito negativo, invalidando i puntatori alle interfacce Lettore multimediale Windows. Lettore multimediale Windows tenterà automaticamente di riconnettersi e attiverà l'evento PlayerReconnect per segnalare questo tentativo. Anche se la riconnessione è automatica, è necessario fornire un gestore eventi per questo evento se si desidera rilasciare i puntatori non validi e recuperarne di nuovi in modo che sia possibile accedere al lettore autonomo tramite la nuova connessione.

Controllo del lettore non ancorato

Tutte le istanze remote del controllo Lettore multimediale Windows possono modificare la modalità completa del lettore indipendentemente dallo stato ancorato. Le funzionalità che non hanno rilevanza per la modalità completa del lettore, tuttavia, vengono ignorate fino a quando il controllo Lettore multimediale Windows non è ancorato. Sono incluse le proprietà delle interfacce IWMPPlayer e derivate, ad esempio enabled, enableContextMenu, uiMode e windowlessVideo.

Finestre di dialogo di errore

Da un'istanza del controllo Lettore multimediale Windows remota, impostazioni.la proprietà enableErrorDialogs si comporta in modo specifico. Sono applicabili le regole seguenti:

  • Quando Lettore multimediale Windows viene scollegato (l'interfaccia utente di Lettore multimediale Windows è visibile), la proprietà enableErrorDialogs viene ignorata e le finestre di dialogo di errore vengono gestite dal lettore.
  • Quando Lettore multimediale Windows è ancorato, il valore specificato da ogni istanza remota del controllo per enableErrorDialogs si applica solo alla singola istanza del controllo. Ovvero, se una particolare istanza del controllo specifica il valore "true" per enableErrorDialogs, solo tale istanza visualizzerà una finestra di dialogo quando si verifica un errore se tutte le altre istanze del controllo hanno specificato un valore "false".

Comunicazione remota in background

È consigliabile evitare di mantenere un'istanza remota del lettore in esecuzione in background durante i momenti in cui il controllo non è in uso. Poiché l'istanza del controllo Lettore remoto condivide il motore di riproduzione con il lettore in modalità completa, mantenere un'istanza in background in esecuzione può causare un comportamento imprevisto. Ad esempio, l'utente potrebbe chiudere il lettore in modalità completa durante la riproduzione di un file. L'utente si aspetta che la riproduzione di file si arresti completamente alla chiusura del lettore, ma l'audio potrebbe continuare a essere riprodotto perché il motore di riproduzione è ancora attivo.

Esempi

Il pacchetto di installazione di Lettore multimediale Windows SDK installa esempi che illustrano la comunicazione remota. Per altre informazioni, vedere gli esempi di RemoteSkin e WMPML.

Esempi

Uso del controllo Lettore multimediale Windows in un programma C++