Aktuellen Song aus Windows Media Player auslesen

easteregg

Commander
Mitglied seit
21.09.2006
Beiträge
175
Renomée
1
Standort
Dresden
Heyho

ich suche für mein Projekt (siehe Signatur) noch nach einer Möglichkeit den aktuellen Titel aus dem WMP auszulesen. Hat da jemand irgendwie Erfahrungen damit oder gar schon funktionierenden Quellcode?
Wäre genial!

Gruß easteregg
 
Mit welcher Sprache?

Prinzipell musst du dir ein Feld oder ein anderes Bedienelement suchen, in dem der Titel steht und das mit deiner Software auslesen. Die Sprache, in der du das realisieren willst, ist halt wichtig. Dann können wir dir einen Code-Schnipsel erzeugen. :)
 
Zuletzt bearbeitet:
delphi 2006!

wenn du mir da helfen kannst mit dem WMP wäre ich dir sehr dankbar, daran knapper und suche ich schon ne ganze weile :)
 
echt? so einfach?
das werde ich gleich mal nachschauen!!!
danke dir

edit:

habs mal nachgeschaut, das geht nur mit einem plugin, aber das wäre eventl. auch eine möglichkeit!

Windows Media player includes support for Plug-ins and the one we'll be using is what they call the "Windows Media Player 9 Series Fun Pack," specifically the Blogging Plug-in. This Plug-In works with Media Player 9 and 10. The Blogging Plug-in does two things, first it adds the artist, song, and album name to the Windows Media Player 9 Series title bar, but more importantly it also populates a specific key in the registry with this information. The idea for this Fun Pack came from the fact that bloggers like to announce what music they are listening to when they post to their blog, and the blogging software they use can check for this information and include it in their post.

Since we're not blogging, we're sending the information to an LCD Panel, the Blogger Plug-In might be better named the "Windows Media What's Playing Publisher Plug-In," but no one asks me when they name these things. Anyway, the What's Playing data is published to four registry values under HKCU\Software\Microsoft\MediaPlayer\CurrentMetadata.

der beste weg wäre aber dennoch gänzlich ohne plugin!
 
Zuletzt bearbeitet:
Das sollte auch über COM (Component Object Model) gehen. Wie viele Microsoft-Programme hat auch der WMP eine COM-Schnittstelle.
Ich denke mal, Du musst "nur" an das IWMPMedia-Interface des aktuellen Songs kommen. Das geht anscheinend über IWMPCore::get_currentMedia.
Stellt sich die Frage wie Du an das IWMPCore-Interface eines geöffneten WMP kommst.

/edit: In C++ anscheinend so:
Code:
CComPtr <IWMPCore> spWMPCore;
HRESULT hr = ::CoCreateInstance(__uuidof(WindowsMediaPlayer),
                                                        NULL,

CLSCTX_INPROC_SERVER,
                                                        __uuidof(spWMPCore),
                                                        (void **)spWMPCore);
if (FAILED(hr) || spWMPCore == NULL)
{
    return FALSE;

}
 
uff von c habsch allerdings irgendwie null plan deswegen muss ich da glaube im blindflug bissl rumprobieren! :D

falls du also plan von delphi hast wäre ich dankbar wenn diu mir da noch paar tipps geben könntest
 
ich werd das nacher oder morgen mal ausprobieren ;)
 
hmm .. anscheinend braucht man ein spezielles sdk ... im normalen platform sdk sind die header jedenfalls nicht enthalten.
 
Man wird wohl das Windows Media SDK brauchen oder wie das heißt.
 
hm so richtig weiter komm ich bis jetzt noch nicht! könnte das jemand von euch vlt. mal ausprobieren (weil ihr denk ich mal viel mehr ahnung davon habt ;) als ich) und mir dann ggf. erklären wie es geht?
 
Also, ich hab mir mal das Vista SDK gezogen (schlappe 1,2GB) und es ausprobiert.

Jedenfalls liefert bei mir get_currentMedia S_FALSE zurück ...
 
Gut, dann erzeugt man mit obigem Code anscheinend doch eine gänzlich neue, unabhängige Instanz des Media Players. Evt. hilft dieser Thread weiter.
 
hm, die links in dem thread sind tot! (wieso verschiebt MS andauernd den content auf ihren seiten...)
was ist das da eigetnlich für ne sprache? java?
 
Mir war langweilig, also hab ich nochmal ein bißchen herumprobiert.

Das RemoteSkin-Beispiel (Samples\Multimedia\WMP_11\cpp\RemoteSkin) aus dem Vista-SDK bietet schon eine gute Grundlage.

Denn in der CMainDlg::OnInitDialog kann ich auf den aktuellen Titel zugreifen, nachdem das Remote-Control erzeugt wurde.

Ungefähr so:
Code:
if(SUCCEEDED(hr))
    {
      hr = m_pView->QueryControl(&m_spPlayer);
      if(!m_spPlayer.p)
      {
        hr = E_NOINTERFACE;
      }
      IWMPMedia *media;
      m_spPlayer->get_currentMedia(&media);
      CComBSTR str;
      media->get_name(&str);
    }

In str steht dann der aktuelle Titel.
 
genial, jetzt müsst ich das nur noch irgendwie in delphi bekommen.
da das aber aus dem vista-sdk ist, ght das dann auch unter XP und co?
 
uh, das muss ich mich mal im delphiboard meines vertrauens nach hilfe umschauen, weil das geht beispielsweise schon weit über mein können hinaus :|
 
aber wie bau das ich das in ne dll ein? weil das ist ja c-code, ich hab damit noch nie was gemacht und auch gar keine ahnung über IDEs diesbezüglich?
 
Die Funktion packt man in eine DLL ,die man mit C++ kompiliert. In Delphi importierst du die Funktion und kannst sie dort nutzen.

Die Sprachen, die so zusammenarbeiten können, sind relativ egal. Die DLL enthält ja alles als Binärcode, wenn sie kompiliert ist.
 
Zuletzt bearbeitet:
alles klar, ich werd mich da mal probieren!
und wie sieht das mit der kombatibilität zu windows XP oder gar 2000 aus?
und den verschiedenen WMP versionen?
weil Vista arbeitet ja mit der version 11
 
Zurück
Oben Unten