2017-09-25 3 views
4

Je souhaite obtenir des informations sur la piste en cours de lecture dans l'application Microsoft Groove dans ma propre application. Je parle de l'application Groove et non de l'API REST.Récupérer les informations sur les pistes en cours de lecture à partir de l'application Microsoft Groove Music

Ma première approche était d'essayer d'obtenir l'information Windows.Media.Playback.BackgroundMediaPlayer (maintenant obsolète) de mon propre processus (app). Plus d'informations sur le Windows.Media.Playback.BackgroundMediaPlayer dans le Dev Center Documentation

L'idée était d'obtenir des informations de BackgroundMediaPlayer.Current, mais cela ne fonctionne que dans le même processus. Et encore une fois, cela est obsolète de toute façon, maintenant MS recommande d'utiliser la classe Windows.Media.Playback.MediaPlayer, mais cela n'est également accessible que dans le même processus où le MediaPlayer est utilisé.

La deuxième approche consisterait à obtenir l'information du System Media Transport Controls.

Pour ceux qui ne connaissent pas le SMTC, voici ce que je parle (le petit pop-up lorsque vous sautez/lecture/pause de votre clavier par exemple):

enter image description here

L'article sur SMTC lié ci-dessus montre comment utiliser ces contrôles dans votre application, la chose que je veux faire est fondamentalement le contraire.

Est-ce que quelqu'un a une autre approche qui pourrait fonctionner?

modifier

Je trouve que cela pourrait être possible en utilisant l'interface ISystemMediaTransportControlsInterop native:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn892315(v=vs.85).aspx

plus exactement la méthode ISystemMediaTransportControlsInterop::GetForWindow:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn892316(v=vs.85).aspx

Mais je ne sais pas comment appeler cette méthode, quelle bibliothèque utiliser (dll) donc je peux (peut-être) pInvoquer ceci dans mon application C#. Les documents indiquent que cela est inclus dans le Kit de développement Windows 10, mais je ne peux pas savoir où.

Peut-être que je me trompe totalement et peut-être que je ne peux pas l'utiliser en C# (parce que c'est une interface C++). Mais mon idée était que cela doit être compilé dans une bibliothèque et que je peux l'utiliser en utilisant pInvoke.

Ce serait très apprécié si quelqu'un peut m'expliquer cela.

+0

Google: "groove api C#" – apocalypse

+0

@apocalypse, encore une fois, je ne parle pas de l'API Groove REST, s'il vous plaît relire mon message. Je parle des informations de piste en cours de lecture, dont l'API Groove REST ne sait rien. L'API REST est uniquement pour rechercher des informations sur * toute * chanson dans la bibliothèque Groove, pas les informations de piste de la chanson que vous jouez dans l'application Groove. –

Répondre

0

https://docs.microsoft.com/en-us/uwp/api/Windows.Media.SystemMediaTransportControls

SystemMediaTransportControls _control = SystemMediaTransportControls.GetForCurrentView();

Windows.Foundation.UniversalApiContract.winmd est le contrat dont vous avez besoin pour accéder à la classe SMTC.

Faites référence à cela et vous devriez être en mesure de prendre le contrôle.

<Reference Include="Windows.Foundation.UniversalApiContract"> <HintPath>C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.UniversalApiContract\3‌​.0.0.0\Windows.Found‌​ation.UniversalApiCo‌​ntract.winmd</HintPa‌​th> </Reference>

ajouter à votre fichier de projet en studio visuel.Je souhaite que ce soit ce que vous cherchiez, de toute façon cela vous permettra d'accéder à l'espace de nom "Windows.Media".