Remoting Kontrol Pemutar Media Windows

[Fitur yang terkait dengan halaman ini, Pemutar Media Windows SDK, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer. MediaPlayer telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer alih-alih Pemutar Media Windows SDK, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Ketika Anda menyematkan kontrol Pemutar Media Windows dalam program C++, Anda dapat menggunakannya sebagai ekstensi jarak jauh dari mode penuh Pemutar. Ini disebut "jarak jauh" kontrol Pemutar Media Windows, dan memungkinkan Anda menyediakan semua fitur Pemutar mode penuh tanpa mengimplementasikannya sendiri.

Saat Anda melakukan remote kontrol, kontrol berbagi mesin pemutaran yang sama dengan mode penuh Pemutar dan pengguna Anda dapat beralih bolak-balik antara mode tersemat (status "ditambatkan"), dan mode penuh (status "tidak ditambatkan"), sementara pemutaran media digital terus tidak terganggu.

Mengaktifkan Penyematan Jarak Jauh

Untuk mengaktifkan penyematan jarak jauh kontrol Pemutar Media Windows, program Anda harus menerapkan antarmuka IServiceProvider dan IWMPRemoteMediaServices. IServiceProvider adalah antarmuka Model Objek Komponen (COM) standar dengan satu metode yang disebut QueryService. Pemutar Media Windows memanggil metode ini untuk mengambil pointer ke antarmuka IWMPRemoteMediaServices.

IWMPRemoteMediaServices memiliki beberapa metode, tetapi hanya dua di antaranya yang relevan langsung dengan jarak jauh. Di GetApplicationName, Anda mengembalikan nama program Anda, yang Pemutar Media Windows tambahkan ke daftar Beralih ke Program Lain pada menu Tampilan. Di GetServiceType, Anda menunjukkan mode penyematan kontrol dengan mengembalikan nilai "Remote" atau "Local". Jika koneksi jarak jauh berhasil dibuat, metode get_isRemote antarmuka IWMPPlayer4 mengembalikan true.

Menentukan Toko Online Eksklusif

Dengan Pemutar Media Windows 11, aplikasi yang menyematkan kontrol Pemutar dari jarak jauh dapat menentukan toko online eksklusif. Dalam hal ini, pemilih layanan di Pemutar Media Windows dinonaktifkan dan hanya toko online yang ditentukan yang tersedia untuk pengguna. Untuk informasi mendetail tentang cara menentukan toko online eksklusif, lihat Toko Online Eksklusif.

Docking dan Undocking

Antarmuka IWMPPlayer4 juga menyediakan akses ke antarmuka IWMPPlayerApplication melalui metode get_playerApplication . Gunakan IWMPPlayerApplication untuk beralih antara status yang ditambarkan dan dilepas dan untuk menentukan status tertampung saat ini dan lokasi tampilan video atau visualisasi.

Metode IWMPPlayerApplication::switchToPlayerApplication melepas dock kontrol dengan membuka mode penuh Pemutar Media Windows dan mentransfer tampilan video atau visualisasi ke panel Sedang Diputar. Metode IWMPPlayerApplication::switchToControl menautkan kontrol dengan mentransfer tampilan video atau visualisasi ke program Anda dan menutup mode penuh Pemutar, jika terbuka. Kontrol juga dapat ditampung dengan memilih program dari daftar Beralih ke Program Lain atau dengan menutup mode penuh Pemutar. Dalam kedua kasus, media digital apa pun yang sedang bermain terus tanpa gangguan.

Mentransfer Tampilan Video atau Visualisasi

Ketika beberapa program dengan kontrol Pemutar Media Windows yang disematkan dari jarak jauh berjalan secara bersamaan, semua kontrol berbagi mesin pemutaran yang sama. Mereka juga berbagi instans yang sama dari mode penuh Pemutar dalam status tidak ditambatkan. Namun, dalam status ditampakkan, hanya satu kontrol yang dapat menampilkan video atau visualisasi. Dalam status tidak ditangguhkan, hanya mode penuh Pemutar yang menampilkan video atau visualisasi. Metode switchToControl berfungsi dalam status yang ditambarkan dan dilepas dan akan mentransfer tampilan video atau visualisasi ke program mana pun yang memanggilnya.

Satu-satunya perbedaan antara status yang ditampar dan tidak ditangguhkan adalah adanya mode penuh Pemutar Media Windows dan kepemilikannya atas tampilan video atau visualisasi. Dalam status tidak ditambatkan, semua kontrol jarak jauh yang disematkan yang saat ini berjalan masih terlihat dan antarmuka pengguna mereka masih berfungsi penuh. Namun, jika jendela video atau visualisasi ada, jendela tersebut kosong. Dalam status ditambatkan, hanya salah satu kontrol jarak jauh yang disematkan yang memiliki tampilan, tetapi semua antarmuka pengguna terus berfungsi.

Menyembunyikan atau Mengubah Kontrol dalam Status Tidak Ditangguhkan

Anda harus menyediakan implementasi Anda sendiri jika ingin menyembunyikan atau mengubah antarmuka pengguna kontrol tersemat dalam status tidak ditambatkan atau ketika program Anda tidak memiliki tampilan. Anda dapat membuat perubahan ini saat menambatkan dan melepas dock kontrol, atau Anda dapat membuatnya sebagai respons terhadap peristiwa Pemutar Media Windows. Karena Pemutar dapat ditampung melalui opsi menu Beralih ke Program Lain , biasanya lebih baik untuk menyediakan fungsionalitas ini sebagai respons terhadap peristiwa.

Anda dapat menerapkan penanganan aktivitas untuk peristiwa SwitchedToPlayerApplication dan SwitchedToControl , atau Anda dapat menerapkan satu penanganan aktivitas untuk peristiwa PlayerDockedStateChange . Dalam kasus terakhir, Anda dapat menentukan status yang ditambatkan dengan memanggil IWMPPlayerApplication::get_playerDocked. Dalam kedua kasus, gunakan IWMPPlayerApplication::get_hasDisplay untuk menentukan apakah program Anda memiliki tampilan video atau visualisasi.

Membuat ulang Sambungan Jarak Jauh

Dalam keadaan tertentu, koneksi antara kontrol jarak jauh dan tertanam dan Pemutar mandiri akan gagal, membatalkan pointer Anda ke antarmuka Pemutar Media Windows. Pemutar Media Windows akan secara otomatis mencoba menyambungkan kembali, dan akan mengaktifkan peristiwa PlayerReconnect untuk memberi sinyal upaya ini. Meskipun koneksi ulang otomatis, Anda harus menyediakan penanganan aktivitas untuk kejadian ini jika Anda ingin melepaskan penunjuk yang tidak valid dan mengambil yang baru sehingga Anda dapat mengakses Pemutar mandiri melalui koneksi baru.

Mengontrol Pemutar yang Tidak Ditangguhkan

Semua instans jarak jauh kontrol Pemutar Media Windows dapat memanipulasi mode penuh Pemutar terlepas dari status terlampir. Fitur yang tidak memiliki relevansi dengan mode penuh Pemutar, namun, diabaikan sampai kontrol Pemutar Media Windows ditampung. Ini termasuk properti IWMPPlayer dan antarmuka turunan, seperti diaktifkan, enableContextMenu, uiMode, dan windowlessVideo.

Kotak Dialog Kesalahan

Dari instans kontrol Pemutar Media Windows jarak jauh, Pengaturan.properti enableErrorDialogs berperilaku dengan cara tertentu. Aturan berikut ini akan berlaku:

  • Saat Pemutar Media Windows dilepas (UI Pemutar Media Windows terlihat), properti enableErrorDialogs diabaikan dan kotak dialog kesalahan ditangani oleh Pemutar.
  • Saat Pemutar Media Windows ditampung, nilai yang ditentukan oleh setiap instans kontrol jarak jauh untuk enableErrorDialogs hanya berlaku untuk instans kontrol individual. Artinya, jika instans kontrol tertentu menentukan nilai "true" untuk enableErrorDialogs, hanya instans tersebut yang akan menampilkan kotak dialog ketika kesalahan terjadi jika semua instans kontrol lainnya telah menentukan nilai "false".

Remoting di Latar Belakang

Anda harus menghindari menjaga instans Pemutar jarak jauh berjalan di latar belakang selama waktu ketika kontrol tidak digunakan. Karena instans kontrol Pemutar jarak jauh berbagi mesin pemutarannya dengan Pemutar mode penuh, menjaga instans latar belakang tetap berjalan dapat menyebabkan perilaku yang tidak terduga. Misalnya, pengguna mungkin menutup Pemutar mode penuh saat file sedang diputar. Pengguna akan mengharapkan bahwa pemutaran file akan sepenuhnya berhenti ketika Pemutar ditutup, tetapi audio mungkin terus diputar karena mesin pemutaran masih aktif.

Sampel

Paket penyiapan SDK Pemutar Media Windows menginstal sampel yang menunjukkan jarak jauh. Lihat sampel RemoteSkin dan WMPML untuk informasi selengkapnya.

Sampel

Menggunakan Kontrol Pemutar Media Windows dalam Program C++